围棋之旅指出:"可以使用内置的make函数创建切片;这就是创建动态大小数组的方式。make 函数分配一个清零数组并返回引用该数组的切片"。我想知道增加阵列片容量的成本是多少。
例如,这两个数组片之间的内存使用量有什么区别:
a := make([]int, 0, 5) // len(a)=0, cap(a)=5
b := make([]int, 0, 1000) // len(b)=0, cap(b)=1000
给数组切片一个容量为 x 只是在内存中创建该切片的数组还是做其他事情?是将阵列片的容量大小保持接近其实际大小更好,还是增加容量以避免将来调整大小的成本更便宜?
提前感谢您的时间和智慧。
切片容量刚好是后备阵列的大小。仅当您知道将追加到切片,并且希望避免将来的分配和复制时,才需要设置容量。如果您不使用append
(或通过切片超过长度来手动调整大小的罕见情况),则额外的容量没有任何用处。
在大多数情况下,追加到数组的相对成本非常小,您可以根据需要让append
分配和复制。