go語言如何求字串長度

2020-12-29 18:00:40

go語言求字串長度的方法:1、使用「len()」函數計算ASCII字串長度;2、使用「utf8.RuneCountInString()」函數計算Unicode字串長度。

本文操作環境:Windows7系統、Go1.11.2版,Dell G3電腦。

推薦教學:《》

Go語言計算字串長度——len()和RuneCountInString()

Go 語言的內建函數 len(),可以用來獲取切片、字串、通道(channel)等的長度。下面的程式碼可以用 len() 來獲取字串的長度。

tip1 := "genji is a ninja"
fmt.Println(len(tip1))
tip2 := "忍者"
fmt.Println(len(tip2))

程式輸出如下:

16
6

len() 函數的返回值的型別為 int,表示字串的 ASCII 字元個數或位元組長度。

輸出中第一行的 16 表示 tip1 的字元個數為 16。

輸出中第二行的 6 表示 tip2 的字元格式,也就是「忍者」的字元個數是 6,然而根據習慣,「忍者」的字元個數應該是 2。

這裡的差異是由於 Go 語言的字串都以 UTF-8 格式儲存,每個中文佔用 3 個位元組,因此使用 len() 獲得兩個中文文字對應的 6 個位元組。

如果希望按習慣上的字元個數來計算,就需要使用 Go 語言中 UTF-8 包提供的 RuneCountInString() 函數,統計 Uncode 字元數量。

下面的程式碼展示如何計算UTF-8的字元個數。

fmt.Println(utf8.RuneCountInString("忍者"))
fmt.Println(utf8.RuneCountInString("龍忍出鞘,fight!"))

程式輸出如下:

2
11

一般遊戲中在登入時都需要輸入名字,而名字一般有長度限制。考慮到國人習慣使用中文做名字,就需要檢測字串 UTF-8 格式的長度。

總結

ASCII 字串長度使用 len() 函數。

Unicode 字串長度使用 utf8.RuneCountInString() 函數。

以上就是go語言如何求字串長度的詳細內容,更多請關注TW511.COM其它相關文章!