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