golang cap是什么意思

互联网 19-12-3

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): 5 cap(mySlice): 10

以上就是golang cap是什么意思的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: golang
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:erlang和golang的区别

相关资讯