Golang:制作函数和第三个参数

有什么区别:


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

   x := make([]int, 5)   

   x := [5]int{}

我知道make分配一个数组并返回一个引用该数组的切片。不明白哪里可以用?


我找不到一个很好的例子来澄清这种情况。


阿晨1998
浏览 183回答 1
1回答

皈依舞

x := make([]int, 5)制作长度为 5 和容量为 5 的切片(int与长度相同)。x := make([]int, 5, 10)使切片的int长度为5和10的容量。x := [5]int{}使得阵列的int长度为5。切片如果您需要使用函数添加比切片容量更多的项目append,go runtime 将分配新的底层数组并将现有数组复制到其中。因此,如果您知道切片的估计长度,最好使用显式容量声明。一开始它会为底层数组消耗更多内存,但对于许多分配和数组复制来说是安全的 CPU 时间。你可以探索如何len和cap改变 while append,使用这个简单的测试Go playground每当cap值改变时,新数组分配数组数组大小是固定的,因此如果您需要增加数组,您必须创建一个具有新长度的新数组,然后自己将旧数组复制到其中。在 go 中有一些关于切片和数组的很棒的文章:http : //blog.golang.org/go-slices-usage-and-internalshttp://blog.golang.org/slices
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go