在golang一共存在3種字元型別: string byte 和 rune
1. 其中string最好理解,就是字面含義上的字元, 如
s := "字"2. rune代表的則是字元的unicode編碼值, 如
r := rune("字")我們會發現列印出的結果是 [23383], 這個就是漢字 「字」 的unicode編碼值的10進製表達fmt.print(r)
如果轉換成16進製制的結果是5b57, 就是我們常見的
hex := "\u5b57"3.byte代表的是按照utf-8格式對字元的unicode值進行編碼後的結果fmt.print(hex) //輸出「字」
s := "字"輸出的結果[229 173 151], 我們將這個結果轉化成 2進製則是 ①[11100101, 10101101, 10010111]fmt.println(byte(s))
我們來對照一下utf-8編碼規則:如果乙個位元組的第一位是0
,則這個位元組單獨就是乙個字元;如果第一位是1
,則連續有多少個1
,就表示當前字元占用多少個位元組,
unicode
utf-8
000000-00007f
0******x
000080-0007ff
110***xx 10******
000800-00ffff
1110***x 10****** 10******
010000-10ffff
11110***10******10******10******
我們之前得到了「字」的unicode值u5b57, 位於第三行,utf-8編碼後的結果是[1110***x 10****** 10******]
我們再把unicode值轉成2進製結果為101101101010111,從後往前依次替換x,不足部分補0
得到 ②[11100101 10101101 10010111] 正是①輸出的結果
二. unicode 與 utf-8
unicode 為每乙個字元規定了乙個唯一值, 通常標準的字元都位於 \u0000到\uffff 65536個值, 當仍可以繼續擴充
但是計算機儲存通常以位元組為單位, 乙個位元組最多只能記錄 0-255, 像「字「的unicode值23383 只能通過多個位元組儲存
utf-8 提供的便是如何將乙個unicode值轉換成多個位元組的規則
Golang 資料型別 字元型別
基本介紹 golang 中沒有專門的字元型別,如果要儲存單個字元 字母 一般使用 byte 來儲存。字串就是一串固定長度的字元連線起來的字串行。go 的字串是由單個位元組連線起來的。也就是說對於傳統的字串是由字元組成的,而 go 的字串不同,它是由位元組組成的。案例演示 對上面 說明 1 如果我們儲...
Golang引用型別,型別轉換,字串
引 用型別包括 slice map 和 channel。它們有複雜的內部結構,除了申請記憶體外,還需 要初始化相關屬性。內建函式 new 計算型別大小,為其分配零值記憶體,返回指標。而 make 會被編譯器翻譯 成具體的建立函式,由其分配記憶體和初始化成員結構,返回物件而非指標。a int 提供初始...
golang的資料型別之字元型別
字元型別使用細節 1 字元常量是用單引號 括起來的單個字元。例如 var c1 byte a var c2 int 中 var c3 byte 9 2 go中允許使用轉義字元 來將其後的字元轉變為特殊字元型常量。例如 var c3 char n n 表示換行符 4 在go中,字元的本質是乙個整數,直...