Golang:Make函数和第三个参数

叶夫根尼(Evgeniy Tkachenko):

之间有什么区别?

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

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

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

RoninDev:

x := make([]int, 5)使切片int长度为5和容量5(同长度)。

x := make([]int, 5, 10)使切片int长度为5和10的容量。

x := [5]int{}使得阵列int长度为5。

切片

如果您需要使用函数添加超出切片容量append,则go runtime将分配新的基础数组并将现有的数组复制到其中。因此,如果您知道切片的估计长度,最好使用显式容量声明。在开始时,它将为基础数组消耗更多的内存,但是对于许多分配和数组复制来说,这是安全的cpu时间。
您可以使用上的简单测试探索每次更改的方式len和方式每次更改值时,都会分配新的数组capappendGo playground
cap

数组

数组大小是固定的,因此,如果需要增加数组大小,则必须创建一个具有新长度的新数组,然后将自己的旧数组复制到其中。

go中有一些关于切片和数组的出色文章:
http : //blog.golang.org/go-slices-usage-and-internals
http://blog.golang.org/slices

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java 8函数编程中“ reduce”函数的第三个参数的目的

std :: thread构造函数第三个模板参数的目的是什么?

Flutter ProxyProvider构建器函数中的第三个输入参数是什么

JavaScript中的forEach回调函数中的第三个参数的含义是什么

Underscore.js _.each函数的第三个参数如何工作?

什么是fstream open函数中的第三个参数

工作方式:排序函数的第三个参数。[arr],[]

具有第三个参数(即比较器函数)的重载sort()如何工作?

np.r_的第三个参数?(numpy)

Haskell showFFloat的第三个参数

如何获取Exception OSError的第三个参数?

python ipow:如何使用第三个参数?

showModalDialog第三个参数错误

htaccess第三个参数不起作用

restartLoader()和initLoader()片段中的第三个参数

为什么NVL2函数的第二个和第三个参数不接受LONG值?

如何从具有可选第三个参数的另一个函数调用函数?

替换第三个值

基于R中的绘图函数的第三个参数有条件地着色数据点

如何将char数组的特定索引传递给outtextxy()函数在c中的第三个参数

C中的第二个和第三个gets()函数不起作用

如何在 R 中绘制知道 X/Y 坐标、半径和连续第三个参数的彩色圆圈

检索和更新函数,用于在第三个数组中求和两个数组

如何使用python函数使用输入来循环数字和递增或递减第三个数字

熊猫:按两个参数分组并按第三个参数排序

如果第二个参数为空,则函数调用,第三个参数为第二个参数?

rxJs三个可观测值,前两个响应作为第三个参数

具有第三个arg的bash函数是一个数组

useReducer中第三个参数的目的是什么?