1. 程式人生 > >Golang rune []byte string 的相互轉換

Golang rune []byte string 的相互轉換

rune在一些流行程式語言中並沒有對應的資料型別。因此首要需要先搞清楚這到底是個啥,否則這個大坑能埋很多人。且看程式碼

func main(){
    str := "名稱Tom"
    fmt.Println(len(str))
    fmt.Println(len([]byte(str)))
}

output: 9 9
輸出的結果可以發現字串的長度竟然和[]byte一樣長。由此可以得出結論字串就是[]byte,不帶偽裝那種。要想得出正確的字串長度就需要rune個型別。

func main(){
    str := "名稱Tom"
    fmt.Println(len
(str)) fmt.Println(len([]rune(str))) }

output: 9 5

這樣的寫法其實是很讓人頭痛的。一旦忘記這個坑在測試環節都有概率被漏掉。
現在回到標題上來,這三項的轉換因其本質是一致的,所以轉換的方式也簡單。

str := "I am lilei"

//string 轉[]byte
b := []byte(str)

//[]byte轉string
str = string(b)

//string 轉 rune
r := []rune(str)

//rune 轉 string
str = string(r)