gpt4 book ai didi

戈朗 : Make function and third param

转载 作者:IT王子 更新时间:2023-10-29 01:18:30 26 4
gpt4 key购买 nike

有什么区别:

   x := make([]int, 5, 10)    
x := make([]int, 5)
x := [5]int{}

我知道 make 分配一个数组并返回一个引用该数组的 slice 。不明白可以用在什么地方?

我找不到一个很好的例子来说明情况。

最佳答案

x := make([]int, 5) 生成 int slice ,长度为 5,容量为 5(与长度相同) .

x := make([]int, 5, 10) 生成 int slice ,长度为 5,容量为 10。

x := [5]int{} 生成长度为 5 的 array int

slice

如果您需要使用 append 函数追加超过 capacity 的项目,go runtime 将分配新的 underlying 数组并复制现有数组给它。因此,如果您知道 slice 的估计长度,最好使用显式容量声明。它会在开始时为底层数组消耗更多内存,但对于许多分配和数组复制来说是安全的 cpu 时间。
您可以使用 Go playground 上的简单测试,探索 lencapappend 时如何变化。
每次 cap 值改变时,分配新的数组

数组

数组大小是固定的,所以如果你需要增长数组,你必须创建一个新长度的新数组,然后自己将旧数组复制到其中。

关于 go 中的 slice 和数组有一些很棒的文章:
http://blog.golang.org/go-slices-usage-and-internals
http://blog.golang.org/slices

关于戈朗 : Make function and third param,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32391147/

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