go语言中len函数得到的长度的单位解析

在 Go 语言中,len 函数返回的是数据结构的元素个数,具体的单位取决于调用 len 的对象类型:

  1. 对于字符串len(s) 返回字符串 s字节数。注意,Go 中的字符串是以 UTF-8 编码存储的,因此 len 返回的结果是字符串所占的字节数,而不是字符数。例如,一个包含多字节字符(如中文字符)的字符串,len 返回的字节数会大于字符数。

    s := "hello"       // 字符串中每个字符占1个字节
    fmt.Println(len(s)) // 输出: 5
    
    s2 := "你好"       // 字符串中每个中文字符占3个字节(UTF-8编码)
    fmt.Println(len(s2)) // 输出: 6 (每个字符3个字节,共2个字符)
    
  2. 对于数组len(a) 返回数组 a 中元素的个数(即数组的长度),单位是“元素个数”。

    a := [3]int{1, 2, 3}
    fmt.Println(len(a)) // 输出: 3
    
  3. 对于切片len(slice) 返回切片 slice 中的元素个数,单位也是“元素个数”。

    b := []int{1, 2, 3, 4}
    fmt.Println(len(b)) // 输出: 4
    
  4. 对于映射(map)len(m) 返回映射 m 中键值对的数量,单位是“键值对的个数”。

    m := map[string]int{"a": 1, "b": 2}
    fmt.Println(len(m)) // 输出: 2
    

总结:len 的返回值单位通常是数据结构中的元素个数,字符串则是字节数。如果是字符数,可以使用 utf8.RuneCountInString 来获取字符的数量。

posted @ 2025-01-01 16:01  LoftyAmbition  阅读(103)  评论(0)    收藏  举报