golang 的 rune 和 byte

劍塵發表於2019-05-09
  1. go語言中runte 和 byte實際上是 uint8 和int32型別。byte用來強調資料是raw data,而不是數字;而rune用來表示Unicode的code point。參考規範:
    uint8 the set of all unsigned 8-bit integers (0 to 255)
    int32 the set of all signed 32-bit integers (-2147483648 to 2147483647)
    byte alias for uint8
    rune alias for int32
    2.[s]runte 和 [s]byte 的區別

golang 的 rune 和 byte
從輸出來看, 沒有任何區別, 作者不可能無緣無故弄出兩個相同的東西,那麼到底區別在哪裡呢?翻看原始碼才知道

golang 的 rune 和 byte

這裡也可以很清晰的看出這裡的中文字串每個佔三個位元組, 區別也就一目瞭然了。
我們可以測試一下切片擷取中文字串和英文字串的區別

golang 的 rune 和 byte
英文字串能正常的擷取,中文字串擷取亂碼。
那麼該如何擷取呢?這裡就需要將中文利用 [] rune 轉換成 unicode 碼點, 再利用 string 轉化回去

相關文章