以下筆記摘錄自『 The Go Workshop 』。
接續上一篇的學習筆記。
其實可以直接使用for range來處理rune,因為Go語言會自動把for i 走訪runes轉成for range迴圈。
package main
import "fmt"
func main() {
username := "Ako sa máš"
runes := []rune(username)
for _, v := range runes {
fmt.Print(string(v), " ")
}
}
所以若要個別處理UTF-8字串的字元,可將字串轉成rune型別切片、再用for range來走訪就是最方便的做法。
Go 語言中,只要使用for range去走訪多位元組編碼字串,就可以避免讀到無效的UTF-8字元了。
For example,
package main
import "fmt"
func main() {
logLevel := "お元気ですか"
for index, runeVal := range logLevel {
fmt.Println(index, string(runeVal))
}
}
///Output
0 お
3 元
6 気
9 で
12 す
15 か
記得習慣,如果字串需要計算長度或者擷取字元的話。就要先把它轉換成rune,避免長度讀取錯誤,導致後續更多錯誤發生。
nil值是Golang的特殊資料值,代表無值也無型別的一個狀態。如果用nil值來計算的話,就會發生問題。我們常利用nil值來確認,比方說處理指標或error值時,都可以先行判斷是不是nil值,也就是判斷是否為空值。