gpt4 book ai didi

arrays - 在 Go 中增加数组 slice 的容量相关的成本是多少?

转载 作者:IT王子 更新时间:2023-10-29 01:44:56 24 4
gpt4 key购买 nike

The Tour of Go 指出:“可以使用内置的 make 函数创建 slice ;这就是创建动态大小数组的方法。make 函数分配一个零数组并返回一个引用该数组的 slice ” .我想知道增加阵列 slice 容量的成本是多少。

例如这两个数组 slice 之间的内存使用有什么不同:

a := make([]int, 0, 5) // len(a)=0, cap(a)=5
b := make([]int, 0, 1000) // len(b)=0, cap(b)=1000

给一个数组 slice 一个容量 x 只是在内存中创建一个该 slice 的数组还是它做了其他事情?是让数组 slice 的容量大小接近其实际大小更好,还是增加容量以避免 future 调整大小的成本更便宜?

提前感谢您的时间和智慧。

最佳答案

slice 容量就是后备数组的大小。如果您知道您将追加到 slice ,并且希望避免将来的分配和复制,您只需要设置容量。如果您不使用 append(或通过 slice 超过长度来手动调整大小的罕见情况),那么额外的容量将毫无用处。

在大多数情况下,追加到数组的相对成本很小,您可以让 append 根据需要分配和复制。

关于arrays - 在 Go 中增加数组 slice 的容量相关的成本是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41306956/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com