Golang rune []byte string 的相互轉換
阿新 • • 發佈:2019-01-05
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)