len()
函数获取一个 string 的时获取到的是字节长度而不是字符长度, 如果要获取字符长度则应使用 utf8.RuneCountInString(str string)
, 如果确切的知道字符的编码, 那么utf8
可以改成别的, 不过大多数时候都是utf8
len()
用于数组是知道数组的长度
len()
用于slice是已存储元素的个数
cap()
用于 slice 是知道 slice 的容量
:=
只能用于方法内命名变量
创建一个 slice 的最佳实践是 make([]type, 0, capacity)
0表示 golang 帮助我们初始化的元素的个数, capacity 表示 slice 的容量有多少
capacity 相当于水桶的容量, len 相当于桶里面装了多少水
举几个例子来看看如果 0 写成其他数字会发生什么?
b:=make([]int, 3, 4)
, 此时 b 的元素为0,0,0
, len(b)为 3, cap(b)为 4. 也就是说, 当我们指定了 golang 帮助我们初始化slice 的元素个数的时候, 那几个元素会被初始化为默认值- 如果后面两个参数只写一个会发生什么? 那么此时 len==cap, 并且 golang 会把所有的元素初始化为默认值
slice如果要追加元素只能用 append 方法, 没法在 length(length<=capacity) 之外的 index 直接赋值, 会报错