目前编程网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《数组分配给与容量相关的切片的规则是什么?》,也希望能帮助到大家,如果阅读完后真的对你学习Golang有帮助,欢迎动动手指,评论留言并分享~
问题内容a := [...]int{0, 1, 2, 3, 4} // an array
sa := a[1:3] // sa == []int{1, 2} cap(sa) == 4
sb := a[:2] // sb == []int{0, 1} cap(sb) == 5
sc := a[2:] // sc == []int{2, 3, 4} cap(sc) == 3
sd := a[:] // sd == []int{0, 1, 2, 3, 4} cap(sd) == 5
我的结论正确吗? slice 容量 = len(array) - [第一个索引]
并且与 [第二个索引]
无关?
解决方案
切片是底层数组的视图。给定 n
的数组长度,如果切片从 arr[0]
开始,则切片的容量为 n
,如果切片从 arr[1]
开始,则切片的容量为 n-1
,等等。的第二个索引。对数组进行切片时给出的第二个索引指定切片长度,而不是容量。
今天关于《数组分配给与容量相关的切片的规则是什么?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在编程网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!