cap告诉您基础数组的容量。
len告诉您数组中有多少个项目。
Go中的slice抽象非常好,因为它将为您调整基础数组的大小,此外,Go中的数组无法调整大小,因此几乎总是使用slice。
例:
s := make([]int, 0, 3)for i := 0; i < 5; i++ { s = append(s, i) fmt.Printf("cap %v, len %v, %pn", cap(s), len(s), s)}
将输出如下内容:
cap 3, len 1, 0x1040e130cap 3, len 2, 0x1040e130cap 3, len 3, 0x1040e130cap 6, len 4, 0x10432220cap 6, len 5, 0x10432220
如您所见,一旦满足容量要求,
append将返回具有更大容量的新切片。在第4次迭代中,您将注意到更大的容量和新的指针地址。
播放范例
我知道您没有询问数组和追加,但是它们是了解切片和内置原因的基础。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)