在 Go 语言中,len
函数返回的是数据结构的元素个数,具体的单位取决于调用 len
的对象类型:
-
对于字符串:
len(s)
返回字符串s
的 字节数。注意,Go 中的字符串是以 UTF-8 编码存储的,因此len
返回的结果是字符串所占的字节数,而不是字符数。例如,一个包含多字节字符(如中文字符)的字符串,len
返回的字节数会大于字符数。s := "hello" // 字符串中每个字符占1个字节 fmt.Println(len(s)) // 输出: 5s2 := "你好" // 字符串中每个中文字符占3个字节(UTF-8编码) fmt.Println(len(s2)) // 输出: 6 (每个字符3个字节,共2个字符)
-
对于数组:
len(a)
返回数组a
中元素的个数(即数组的长度),单位是“元素个数”。a := [3]int{1, 2, 3} fmt.Println(len(a)) // 输出: 3
-
对于切片:
len(slice)
返回切片slice
中的元素个数,单位也是“元素个数”。b := []int{1, 2, 3, 4} fmt.Println(len(b)) // 输出: 4
-
对于映射(map):
len(m)
返回映射m
中键值对的数量,单位是“键值对的个数”。m := map[string]int{"a": 1, "b": 2} fmt.Println(len(m)) // 输出: 2
总结:len
的返回值单位通常是数据结构中的元素个数,字符串则是字节数。如果是字符数,可以使用 utf8.RuneCountInString
来获取字符的数量。