go uint64 转 字符_Go的基本数据类型入门看这一篇就差不多了
一開始直接上圖,直觀的看下基本數據類型
整型
表格表示
| 類型 | 有無符號 | 占用的存儲空間 | 數值范圍 | 描述 |
| int8 | 有 | 1字節 | -128 ~ 127 | |
| int16 | 有 | 2字節 | -32768 ~ 32767 | |
| int32 | 有 | 4字節 | -2147483648 ~ 2147483647 | |
| int64 | 有 | 8字節 | -9223372036854775808 ~ 9223372036854775807 | |
| int | 有 | 32位系統4字節 64位系統8字節 | 32位系統看int32 64位系統看int64 | |
| byte | 無 | 1字節,與int8等價 | 0 ~ 255 | byte也用來存儲字符 |
| rune | 有 | 4字節 | 同int32 | 相當于 Unicode下的 int32 |
| uint8 | 無 | 1字節 | 0 ~ 255 | |
| uint16 | 無 | 2字節 | 0 ~ 65535 | |
| uint32 | 無 | 4字節 | 0 ~ 4294967295 |
用"math"包中的常量打印出整型的范圍
官方文檔的截圖
示例代碼
package mainimport ( "fmt" "math")func main(){ fmt.Println("int8 min = ", math.MinInt8, " int8 max = ", math.MaxInt8) fmt.Println("int16 min = ", math.MinInt16, " int16 max = ", math.MaxInt16) fmt.Println("int32 min = ", math.MinInt32, " int32 max = ", math.MaxInt32) fmt.Println("int64 min = ", math.MinInt64, " int64 max = ", math.MaxInt64) fmt.Println("Uint8 max = ", math.MaxUint8) fmt.Println("Uint16 max = ", math.MaxUint16) fmt.Println("Uint32 max = ", math.MaxUint32) //fmt.Println(" Uint64 max = ", math.MaxUint64) }在官方文檔中,Uint64是有的,但是在我本機中,我打印就溢出,所以這個還需要你們在這里的電腦中測試一下,是否能打印處理來
用"unsafe"包打印整型的存儲大小
官方文檔的截圖
示例代碼
package mainimport ( "fmt" "unsafe")func main(){ var sizeofInt8 int8 var sizeofInt16 int16 var sizeofInt32 int32 var sizeofInt64 int64 fmt.Println("int8 所占的字節數 = ", unsafe.Sizeof(sizeofInt8)) fmt.Println("int16 所占的字節數 = ", unsafe.Sizeof(sizeofInt16)) fmt.Println("int32 所占的字節數 = ", unsafe.Sizeof(sizeofInt32)) fmt.Println("int64 所占的字節數 = ", unsafe.Sizeof(sizeofInt64)) var sizeofint int fmt.Println("int 所占的字節數 = ", unsafe.Sizeof(sizeofint)) var sizeofUint8 uint8 var sizeofUint16 uint16 var sizeofUint32 uint32 var sizeofUint64 uint64 fmt.Println("Uint8 所占的字節數 = ", unsafe.Sizeof(sizeofUint8)) fmt.Println("Uint16 所占的字節數 = ", unsafe.Sizeof(sizeofUint16)) fmt.Println("Uint32 所占的字節數 = ", unsafe.Sizeof(sizeofUint32)) fmt.Println("Uint64 所占的字節數 = ", unsafe.Sizeof(sizeofUint64)) }在這里,因為我用的是64位的筆記本,所以int 打印的是8個字節
用"fmt"包的 Printf 格式化輸出整型的默認值
官方文檔的截圖
示例代碼
package mainimport ( "fmt")func main(){ var defaultValueInt8 int8 var defaultValueInt16 int16 var defaultValueInt32 int32 var defaultValueInt64 int64 fmt.Printf("int8 的默認值是 = %v\n", defaultValueInt8) fmt.Printf("int16 的默認值是 = %v\n", defaultValueInt16) fmt.Printf("int32 的默認值是 = %v\n", defaultValueInt32) fmt.Printf("int64 的默認值是 = %v\n",defaultValueInt64) var defaultValueint int fmt.Printf("int 的默認值是 = %v\n", defaultValueint) var defaultValueUint8 uint8 var defaultValueUint16 uint16 var defaultValueUint32 uint32 var defaultValueUint64 uint64 fmt.Printf("Uint8 的默認值是 = %v\n", defaultValueUint8) fmt.Printf("Uint16 的默認值是 = %v\n", defaultValueUint16) fmt.Printf("Uint32 的默認值是 = %v\n", defaultValueUint32) fmt.Printf("Uint64 的默認值是 = %v\n", defaultValueUint64) }浮點型
| 類型 | 占用的存儲空間 | 取值范圍 | 描述 |
| float32 | 4字節 | 單精度 | |
| float64 | 8字節 | 雙精度 | |
| 這里說的精度,表示的是小數點后,能顯示的位數精確到哪幾位 |
官方文檔的截圖
這是打印 float 范圍的常量
示例代碼
package mainimport ( "fmt" "math" "unsafe")func main(){ //打印 float 的取值范圍 fmt.Println("float32的最小值 = ",math.SmallestNonzeroFloat32," 最大值為 = ", math.MaxFloat32) fmt.Println("float64的最小值 = ",math.SmallestNonzeroFloat64," 最大值為 = ", math.MaxFloat64) //打印 float 所占存儲空間的大小 var sizeoffloat32 float32 var sizeoffloat64 float64 fmt.Println("float32所占的存儲空間為:",unsafe.Sizeof(sizeoffloat32)) fmt.Println("float64所占的存儲空間為:",unsafe.Sizeof(sizeoffloat64)) //打印 float 的默認值 fmt.Printf("float32的默認值為:%v\n", sizeoffloat32) fmt.Printf("float64的默認值為:%v\n", sizeoffloat64)}我把取值范圍,所占存儲空間大小,默認值都寫在同一個文件中,你可以把代碼復制進編譯器運行一遍,至于里面用到的一些包和方法,上面有截圖,你可以去上面看一下
上面打印出來的取值范圍用的是科學計數法[1]
Go浮點型賦值的時候
0.123 是可以等價為 .123,只有小數點前為0可以使用字符型
字符型跟別的編程語言不一樣,這里的字符不是用的char來存儲,用的是byte來存儲,而且存儲的范圍只有?-128 ~ 127,存儲的是ASCII表[2]所展示的內容
示例代碼
package mainimport ( "fmt" "unsafe")func main(){ var sizeofByte byte //打印出byte的存儲大小 fmt.Println("byte所占的存儲空間為:", unsafe.Sizeof(sizeofByte)) //打印出byte的默認值 fmt.Printf("byte的默認值為:%q", sizeofByte)}這里的 %q,是可以把原本基本類型的格式也打印出來(個人理解)
如果我們各種情況打印字符的話,那會是什么情形?
package mainimport ( "fmt")func main(){ var testByte byte = 'a' //打印 testByte的值,不用格式化輸出 fmt.Println("testByte不是格式化輸出的值為:", testByte) //打印 testByte的值,用格式化輸出 fmt.Printf("testByte格式化輸出的值為:%c\n", testByte) var testByte2 byte //用 %q格式化打印 testByte2的值 fmt.Printf("testByte2的值為:%q\n", testByte2) //用 %c格式化打印 testByte2的值 fmt.Printf("testByte2的值為:%c\n", testByte2)}第一個輸出,是輸出字符在 ASCII中十進制的表示,a的十進制是97
第二個用格式化輸出,用的%c,是輸出了相應的Unicode代碼表示的字符
第三個和第四個輸出的是byte的默認值,但是兩者有不同的區別,用%q有把?''?也給輸出了,但是%c沒有
思考題:因為 byte只能存儲一個字節,而漢字一般占用的是3-4個字節,那么該用什么來存儲?
package mainimport ( "fmt")func main(){ var testA int = '帥' fmt.Println("testA的值為:", testA) fmt.Printf("testA用格式化輸出:%c", testA)}答案是用整型來接收,byte實質上等于int8,而且存儲在計算機時,計算機不是存儲的字符,而是字符所代表的ASCII表的十進制的數字,那用整型就可以存儲更大的漢字了,因為最后在計算機也是存儲的是數字
布爾類型
布爾類型也是叫?bool類型,它只有兩個值,true或者是false
bool只占存儲空間的1個字節
示例代碼
package mainimport ( "fmt" "unsafe")func main(){ var testbool bool fmt.Println("testbool的默認值是:", testbool) fmt.Println("testbool所占存儲空間的大小是:", unsafe.Sizeof(testbool))}補充:bool常用于循環、條件語句中
字符串
示例代碼
在上面的字符那里,我們每次只能寫一個字符,而字符串可以讓你,一次性多寫很多個字符
package mainimport ( "fmt" "unsafe")func main(){ var testString string fmt.Println("testString的默認值是:", testString) fmt.Println("testString所占存儲空間的大小是:", unsafe.Sizeof(testString)) fmt.Printf("testString的默認值是,用格式化輸出:%s\n", testString) fmt.Printf("testString的默認值是,用格式化輸出:%q", testString)}在上面,string 默認的大小是16個字節,而我們格式化輸出 %s,是說直接輸出這個字符串內容,但是由于我們沒有賦值,它默認是空,所以輸出空白,但我們用了%q去輸出內容,輸出了雙引號,輸出了它的格式""
有個需要注意的點:字符串一經創建,就不能修改
字符串拼接
package mainimport ( "fmt")func main(){ var hello string = "hello" var world string = " world" var helloworld string = hello + world fmt.Println(helloworld)}輸出的是:hello world
有個注意點:如果有多個字符串拼接,如果太長了,你要換行,需要把 + 號,放在前一個字符串的后面,而不能連 + 號也換行了,不然會報錯解釋:因為Go語言中,執行代碼的時候,在你不添加 ;分號的時候,換行就等于是新的語句了,而上面的代碼,Go會隱式的給你加上 ;分號
References
[1]?科學計數法:?https://baike.baidu.com/item/%E7%A7%91%E5%AD%A6%E8%AE%B0%E6%95%B0%E6%B3%95/1612882?fromtitle=%E7%A7%91%E5%AD%A6%E8%AE%A1%E6%95%B0%E6%B3%95&fromid=756685&fr=aladdin[2]?ASCII表:?https://baike.baidu.com/item/ASCII/309296?fromtitle=ascii%E7%A0%81&fromid=99077&fr=aladdin
總結
以上是生活随笔為你收集整理的go uint64 转 字符_Go的基本数据类型入门看这一篇就差不多了的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java解析mqtt_物联网安全系列 |
- 下一篇: 上海今日大风什么时候结束(上海海洋天气预