一、字元串長度介紹
字元串是多數語言中常見的數據類型之一,代表一系列字元的序列。在Go語言中,字元串以UTF-8編碼實現,因此每個字元的長度不同。Go語言中獲取字元串長度的方法有多種,下面從不同角度介紹。
二、通過len()函數獲取字元串長度
Go內置了獲取字元串長度的len()函數,可以返回字元串的位元組數,如下所示:
package main import "fmt" func main() { str := "Go語言" fmt.Println(len(str)) // 8 }
以上代碼中,使用len()函數獲取字元串「Go語言」的長度,結果為8,分別代表6個字元的位元組數以及2個漢字的位元組數。
三、通過rune類型獲取字元串長度
除了len()函數外,Go還提供了rune類型獲取字元串長度的方法,rune類型表示Go字元類型的別名,它可以用來處理Unicode字元,如下所示:
package main import "fmt" func main() { str := "Go語言" fmt.Println(len([]rune(str))) // 4 }
以上代碼中,使用[]rune轉換字元串類型,再用len()函數獲取長度,結果為4,代表4個字元。
四、通過strconv包實現長度轉換
除了Go語言內置的獲取字元串長度的函數外,還可以使用strconv包中的函數將字元串轉換成rune類型,如下所示:
package main import ( "fmt" "strconv" ) func main() { str := "Go語言" fmt.Println(strconv.IntSize) // 64 runeSlice := []rune(str) fmt.Println(strconv.FormatInt(int64(len(runeSlice)), 10)) // 4 }
以上代碼中,使用strconv包中的FormatInt()函數將rune類型的字元長度轉換為字元串,結果為4。
五、通過Unicode/UTF-8獲取字元串長度
對於不同類型的字元,Unicode和UTF-8協議規定了一定的位元組數表示方法,我們可以通過這些規則來獲取字元串長度,如下所示:
package main import ( "fmt" "unicode/utf8" ) func main() { str := "Go語言" fmt.Println(utf8.RuneCountInString(str)) // 4 fmt.Println(utf8.RuneLen('G')) // 1 fmt.Println(utf8.RuneLen('o')) // 1 fmt.Println(utf8.RuneLen('語')) // 3 }
以上代碼中,使用unicode/utf8包中的RuneCountInString()函數獲取字元串中包含的Unicode字元數,使用RuneLen()函數獲取單個字元所佔位元組數。
六、總結
Go語言中字元串長度的獲取方法多種多樣,常用的方式包括len()函數、rune類型、strconv包以及Unicode/UTF-8獲取方式等等。開發者可以根據場景選擇不同的方法。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/309568.html