TODO:位元組的那點事Go篇

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

TODO:位元組的那點事Go篇

(本文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轉碼,

輸出:

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

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

wxgzh:ludong86

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.