TODO 位元組的那點事Go篇

2021-07-25 04:37:53 字數 934 閱讀 8797

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於2023年建立。現在已經標準化為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

this的那點事

對於很多初學者,this總是搞得我們暈頭轉向。現在,我就簡單的總結一下關於this的那點事。this在函式定義時經常是不能確定的,只有在函式執行的時候才能最終確定this的歸屬。this總是指向最後呼叫它的物件,那麼怎麼知道到底是誰呼叫的呢?其實很簡單,我們知道函式呼叫的其中一種方法就是利用call...

拓展的那點事

時間過得很快,又到了公司每年的拓展時間,今年公司拓展活動是安排在崇明島,因為時間關係自己有一些瑣事不能參加,至今心裡還有一絲的眷戀。拓展訓練不是簡單的娛樂和體育活動,它的中間融合了各種挑戰的元素,這些東西一般是在大學和工作中很難學到的,有時我們看了一些書就感覺自己知道和明白這些道理,但是遇到真真的事...

typedef的那點事

typedef struct node node,linklist 以上這段 幾乎在任何資料結構教材中都會出現,如此經典的一段 的理解還真是費了我一番功夫。之前學的是c 這種純正c風格的寫法幾乎沒有用到過。1.struct node 定義了乙個stuct node型別的結構體 c語言規定結構體型別為...