在 Go 语言中,len() 函数获取的是字符串的字节数,而不是字符数。这是因为在 Go 中,字符串底层实现使用 UTF-8 编码,一个字符可能由多个字节组成(例如汉字)。因此,对于一个字符串变量 str 来说,len(str) 返回的结果表示该字符串占用的内存空间大小。
如果想要获取字符串中字符的数量(即 Unicode 码点的数量),可以使用 utf8.RuneCountInString() 函数来计算。示例代码如下:
import "unicode/utf8"
func main() {
str := "hello, 世界"
// 获取字符串长度(字节数)
length := len(str)
fmt.Println(length) // 输出 13
// 获取字符串中字符数量
charCount := utf8.RuneCountInString(str)
fmt.Println(charCount) // 输出 9
}
通过以上代码可以看到,在处理包含 Unicode 字符串时,应该注意使用 utf8.RuneCountInString() 来计算真正意义上的字符数。




