一、字元串長度介紹
字元串是多數語言中常見的數據類型之一,代表一系列字元的序列。在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
微信掃一掃
支付寶掃一掃