TODO:字節的那點事Go篇

TODO:字節的那點事Go篇

12800003df376b8ed9ca-1.jpg

(本文go version go1.7.3 darwin/amd64)

在Golang中string底層是由byte數組組成的。

fmt.Println(len(“dsd好”))

輸出的長度是6

fmt.Println(len(string(rune(‘好’))))

輸出的長度是3

fmt.Println(len([]rune(“好的2s”)))

輸出的長度是4

所以用string存儲unicode的話,如果有中文(中文是由3個字節組成

),按下標是訪問不到的,因爲你只能得到一個byte。 要想訪問中文的話,還是要用rune切片,這樣就能按下標訪問。

UTF-8(8-bit Unicode Transformation Format)是一種針對Unicode的可變長度字符編碼,又稱萬國碼。由Ken Thompson於1992年創建。現在已經標準化爲RFC 3629。UTF-8用1到4個字節編碼Unicode字符。用在網頁上可以統一頁面顯示中文簡體繁體及其它語言(如英文,日文,韓文)。

爲什麼要做UTF-8轉碼?很大語言直接支持UTF-8,部分語言存儲字符串到內存時直接使用 UTF-8編碼。UTF-8是一個通用解決方案,一直有人維護。例如Golang語言就直接支持UTF-8。

接下來我們來看看Golang是怎麼處理UTF-8轉碼,如圖

127c00010479249758e0-1.jpg

輸出:

12820000ba444d258a72-1.jpg

爲什麼fmt.Println(StrToByte(“國”))輸出[11]呢?由先瞭解到byte到範圍是0~256,22283對256取餘爲11。

在Golang中就是這樣使用UTF-8,你是否注意到其中到使用細節呢。


wxgzh:ludong86

qrcode_for_gh_6bb1f39ae99c_258-1


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章