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