Go語言中byte型別和rune型別(五)

2022-04-09 18:57:55 字數 907 閱讀 6842

go語言中字串需要使用用雙引號,而單引號用來表示單個的字元,字元也是組成字串的元素。go語言的字元有兩種:

uint8型別,或者叫 byte 型,代表了ascii碼的乙個字元。

rune型別,代表乙個utf-8字元

ascii編碼是1個位元組,而utf-8是可變長的編碼,當要表示中文等非ascll編碼的字元時,需要使用utf-8編碼來保證不會亂碼。

舉個例子,來遍歷列印乙個字串,當使用byte型別時:

func main()

}

上面結果,英文本元正確列印,但中文亂碼。是因為utf8編碼下乙個中文漢字由3~4個位元組組成,而字串是由byte位元組組成,所以長度也是byte字元長度,這樣遍歷時遇到中文就亂碼了。

遇到這種帶中文的字串,可以使用go提供的另乙個方法來遍歷:

func main()

}

使用range,其實是使用rune型別來編碼的,rune型別用來表示utf8字元,乙個rune字元由乙個或多個byte組成。

所謂對字串的修改其實不是對字串本身的修改,而是複製字串,同時修改值,即重新分配來記憶體。

在go中修改字串,需要先將字串轉化成陣列,byte 或 rune,然後再轉換成 string型。

對於全是ascii編碼的字串:

func main()

對於包含非ascii編碼的字串:

func main()

上面使用到的 string(),表示強制型別轉換,轉換為字串。

本篇主要介紹 byte 和 rune 兩種型別的字元,涉及到的for迴圈和強制型別轉換可以簡單了解下,有程式設計基礎的很容易懂。

go語言中int和byte轉換

主機位元組序模式有兩種,大端資料模式和小端資料模式,在網路程式設計中應注意這兩者的區別,以保證資料處理的正確性 例如網路的資料是以大端資料模式進行互動,而我們的主機大多數以小端模式處理,如果不轉換,資料會混亂 參考 一般來說,兩個主機在網路通訊需要經過如下轉換過程 主機位元組序 網路位元組序 主機位...

go語言中int和byte轉換方式

主機位元組序 主機位元組序模式有兩種,大端資料模式和小端資料模式,在網路程式設計中應注意這兩者的區別,以保證資料處理的正確性 例如網路的資料是以大端資料模式進行互動,而我們的主機大多數以小端模式處理,如果不轉換,資料會混亂 參考 一般來說,兩個主機在網路通訊需要經過如下轉換過程 主機位元組序 網路位...

GO語言中的內建變數型別和

數字型別 1 uint8 無符號 8 位整型 0 到 255 2 uint16 無符號 16 位整型 0 到 65535 3 uint32 無符號 32 位整型 0 到 4294967295 4 uint64 無符號 64 位整型 0 到 18446744073709551615 5 int8 有符...