Go 面試題 005:rune 和 byte 有什么區(qū)別?
大家好,我是明哥。
歡迎大家再次來到 『Go 語言面試題庫』 這個專欄
本專欄內(nèi)容,已經(jīng)上傳 github:https://github.com/iswbm/golang-interview
請大家?guī)蛶兔θc個小 ??,在那里我對題庫進(jìn)行了分類整理
第五題

請聽題:
rune 和 byte 有什么區(qū)別?
一個字符串是由若干個字符組合而成的,比如 hello,就由 5 個字符組成。
在 Go 中字符類型有兩種,分別是:
byte 類型:字節(jié),是 uint8 的別名類型
rune 類型:字符,是 int32 的別名類型
byte 和 rune ,雖然都能表示一個字符,但 byte 只能表示 ASCII 碼表中的一個字符(ASCII 碼表總共有 256 個字符),數(shù)量遠(yuǎn)遠(yuǎn)不如 rune 多。
rune 表示的是 Unicode字符中的任一字符,而我們都知道,Unicode 是一個可以表示世界范圍內(nèi)的絕大部分字符的編碼,這張表里幾乎包含了全世界的所有的字符,當(dāng)然中文也不在話下。
能表示的字符更多,意味著它占用的空間,也要更大,所占空間是 4個 byte 的大小。
下面以一段代碼來驗證一下他們的占用空間的差異
var a byte = 'A'
var b rune = 'B'
fmt.Printf("a 占用 %d 個字節(jié)數(shù)\n", unsafe.Sizeof(a))
fmt.Printf("b 占用 %d 個字節(jié)數(shù)\n",unsafe.Sizeof(b))
// output
a 占用 1 個字節(jié)數(shù)
b 占用 4 個字節(jié)數(shù)

???
評論
圖片
表情
