golang cap是什么意思
Go  /  管理员 发布于 7年前   338
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)表示所有元素有几个,比如:
arr := []int{2, 3, 5, 7, 11, 13}sli := arr[1:4]fmt.Println(sli)fmt.Println(len(sli))fmt.Println(cap(sli))
cap()函数返回的是数组切片分配的空间大小。
package main import "fmt" func main() { mySlice := make([]int, 5, 10) fmt.Println("len(mySlice):", len(mySlice)) fmt.Println("cap(mySlice):", cap(mySlice)) }
该程序的输出结果为:
len(mySlice): 5cap(mySlice): 10
以上就是golang cap是什么意思的详细内容,更多请关注其它相关文章!
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号