golang 字元型別 與 Unicode

2021-10-02 03:13:08 字數 1274 閱讀 1703

在golang一共存在3種字元型別: string byte 和 rune 

1. 其中string最好理解,就是字面含義上的字元, 如

s := "字"
2. rune代表的則是字元的unicode編碼值, 如

r :=  rune("字")

fmt.print(r)

我們會發現列印出的結果是 [23383], 這個就是漢字 「字」 的unicode編碼值的10進製表達

如果轉換成16進製制的結果是5b57, 就是我們常見的 

hex := "\u5b57"

fmt.print(hex) //輸出「字」

3.byte代表的是按照utf-8格式對字元的unicode值進行編碼後的結果

s := "字"

fmt.println(byte(s))

輸出的結果[229 173 151], 我們將這個結果轉化成 2進製則是 ①[11100101, 10101101, 10010111]

我們來對照一下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中,字元的本質是乙個整數,直...