Golang的slice为何一定要len和cap二者

问题

  • 始终觉得slice的定义只需要len即可,cap有什么好处呢?

答案

  • cap主要是为了让slice提供可变长度。
    试想,如果没有cap,只有len。
    sliceA长度为10,len=10,已经插满元素;现在要插入第十一个元素。
    • 做法
      sliceA的长度扩展为20,len=20,此时有用元素为11个,还有9个空位。
      sliceA对外界暴露出来的接口只有ptr和len=20,此时如果需要再插入一个元素。
      到底sliceA应该扩展呢还是可以继续在原来的基础直接插入呢,同时应该从哪个index插入呢?
      这些问题在有了len和cap的组合之后就可以迎刃而解了。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容