慕移动1325614
2019-09-19 15:51
如题,对容量的计算还是搞得晕晕的。slice5的数值是5,6,不是应该是底层数组第一个元素的索引值和长度的差的绝对值?好像是5吧?
然后通过扩展变成8?为什么看别人的答案做出来是4?晕了
slice5 := numbers4[4:6:8]
首先len表示切片内包含的元素个数,显然这里就是6-4=2
然后cap表示从切片第一个数开始,到底层数组的元素末尾(包含)的元素个数,这里底层数组是:
var numbers4 = [...]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10},长度为10
slice5的第一个数的索引为4
也就是说,cap的值为10-4=6
但是由于slice5加上了容量上界索引8,所以其实cap应该是8-4=4
等于说是,加上容量上界索引后,底层数组其实是var numbers4 = [...]int{1, 2, 3, 4, 5, 6, 7, 8}
总结:切片长度=结束索引-起始索引,切片容量=底层数组长度-起始索引
如有错误,请指正。
Go语言第一课
107752 学习 · 148 问题
相似问题