Go語言中的rune類型淺析


rune是Go語言中一種特殊的數據類型,它是int32的別名,幾乎在所有方面等同於int32,用於區分字符值和整數值

 1 package main
 2 
 3 import "fmt"
 4 
 5 func main() {
 6 
 7     var str = "hello 世界"
 8     fmt.Println("len(str):", len(str))
 9 
10 }

這段代碼的執行結果為:

len(str):12

從字符串字面值看len(str)的結果應該是8,但在Golang中string類型的底層是通過byte數組實現的,在unicode編碼中,中文字符占兩個字節,而在utf-8編碼中,中文字符占三個字節而Golang的默認編碼正是utf-8.

如果想要獲得真實的字符串長度而不是其所占用字節數,有兩種方法實現

方法一:

使用unicode/utf-8包中的RuneCountInString方法

str := "hello 世界"
fmt.Println("RuneCountInString:", utf8.RuneCountInString(str))

方法二:

將字符串轉換為rune類型的數組再計算長度

str := "hello 世界"
fmt.Println("rune:", len([]rune(str)))


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM