为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
阿晨1998 2021-11-08 10:01:04
有什么区别:   x := make([]int, 5, 10)       x := make([]int, 5)      x := [5]int{}我知道make分配一个数组并返回一个引用该数组的切片。不明白哪里可以用?我找不到一个很好的例子来澄清这种情况。
查看完整描述

1 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

x := make([]int, 5)制作长度为 5 和容量为 5 的切片int与长度相同)。

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

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

切片

如果您需要使用函数添加比切片容量更多的项目append,go runtime 将分配新的底层数组并将现有数组复制到其中。因此,如果您知道切片的估计长度,最好使用显式容量声明。一开始它会为底层数组消耗更多内存,但对于许多分配和数组复制来说是安全的 CPU 时间。
你可以探索如何lencap改变 while append,使用这个简单的测试Go playground
每当cap值改变时,新数组分配

数组

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

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


查看完整回答
反对 回复 2021-11-08
  • 1 回答
  • 0 关注
  • 182 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信