美文网首页喃喃自语
Golang的slice为何一定要len和cap二者

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

作者: 空即是色即是色即是空 | 来源:发表于2018-09-14 22:36 被阅读78次

    问题

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

    相关文章

      网友评论

        本文标题:Golang的slice为何一定要len和cap二者

        本文链接:https://www.haomeiwen.com/subject/uwvagftx.html