本文摘自php中文网,作者(*-*)浩,侵删。

cap主要是为了让slice提供可变长度。
试想,如果没有cap,只有len。 (推荐学习:go)
sliceA长度为10,len=10,已经插满元素;现在要插入第十一个元素。
做法
sliceA的长度扩展为20,len=20,此时有用元素为11个,还有9个空位。
sliceA对外界暴露出来的接口只有ptr和len=20,此时如果需要再插入一个元素。
到底sliceA应该扩展呢还是可以继续在原来的基础直接插入呢,同时应该从哪个index插入呢?
这些问题在有了len和cap的组合之后就可以迎刃而解了。
cap()可以用来查看数组或slice的容量
在数组中由于长度固定不可变,因此len(arr)和cap(arr)的输出永远相同
在slice中,len(sli)表示可见元素有几个(也即直接打印元素看到的元素个数),而cap(sli)表示所有元素有几个,比如:
1 2 3 4 5 |
|
cap()函数返回的是数组切片分配的空间大小。
1 2 3 4 5 6 7 8 9 10 |
|
该程序的输出结果为:
1 2 |
|
以上就是golang cap是什么意思的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
golang 获取三种不同的路径方法(执行路径,项目路径,文件路径)
gorm 如果使用同一个sql.db 去开协程。为什么速度会比单线程跑快很多
手撸golang 仿spring ioc/aop 之6 扫码1
更多相关阅读请进入《golang》频道 >>

Go语言101
一个与时俱进的Go编程知识库。