请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于slice和cap一点疑问

在讲解切片的cap概念时,s1 := arr[2:6],可以理解为从arr[2]开始切到arr[6],其value为[2, 3, 4, 5],其cap为6,此时可以理解为s1[0] == 2,s1[3] ==5,即len(s1) == 4,在Println(s1[3:6])的时候应该是打印s1[3] – s1[6],此时的s1[4] == arr[6] , s1[5] == arr[7] s1[6] ==arr[8],根据左闭右开,这里能取到s1[3:6],取不到s1[3:7]是可以理解的,切片在不指定cap大小时,继承原数组cap,而这和cap这个容量的概念有什么关系呢?如果说对arr这个数组来说,其len == cap ,我在使用s5 := arr[0:3:10]时,提示超过数组界限,也就是说cap这个概念在切片中,只是提供了一个后扩的功能,限制了后扩的数量,对数组本身是意义不大的是吗?

正在回答 回答被采纳积分+3

插入代码

1回答

ccmouse 2020-08-18 17:33:58

cap对于程序逻辑意义不大。逻辑上主要考虑len。性能上我们如果不断往slice中添加元素的话,底层的数组最好预先分配,也就是cap要比len大。

下一章3-3 切片的操作中,我会详细讲解系统在append时分配空间的方式。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号