问题

  • 始终觉得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的组合之后就可以迎刃而解了。