golang中rune型別
在golang中rune等同於int32,只是一般用於字元轉換。 golang中len()方法主要計算數組長度。
golang中預設存儲字串是採用utf8格式,utf8採用變長字節存儲,英文字母是單字節存儲,中文是3個字節存儲,所以-1和-2的執行結果是16和15。 golang中有utf8.RuneCountInString和[]rune()兩種方式將utf8轉換成4個位元組的int32存儲,然後計算int32數組的長度。
-1 address := "this is shanghai" fmt.Println("len(address):",len(address)) -2 address := "this is shanghai" fmt.Println("len(address):",len(address)) -3 addressThree := "这是在上海" fmt.Println("len(address):",utf8.RuneCountInString(addressThree)) -4 fmt.Println("len(address):",len([]rune(addressThree))) -5 unicode.Is(unicode.Han, c) //可以判断字符是否是汉语
結果
-1 len(address): 16 -2 len(address): 15 -3 len(address): 5 -4 len(address): 5