[Go] 理解切片slice扩容
2023-02-18 15:37:14 时间
切片有个长度和容量两个参数 , 当长度超过容量的时候 , 容量会扩容2倍
当容量大于1024个的时候,容量会扩容为原来的1.25倍
从下面的代码中可以看得到
当增加新的元素的时候,超过了容量,但是容量大小小于1024的时候 , 是2倍扩容
当新增元素 , 超过了容量 , 并且容量大于1024 , 是1.25倍扩容
//数组 arr := [4]int{1, 2, 3, 4} arrSlice := arr[:] log.Printf("长度:%d,容量:%d\n", len(arrSlice), cap(arrSlice)) //容量超过 ,扩容2倍 4*2=8 arrNewSlice := append(arrSlice, 5) log.Printf("长度:%d,容量:%d\n", len(arrNewSlice), cap(arrNewSlice)) var arr2 = [1024]int{} for i := 0; i < 1024; i++ { arr2[i] = i } log.Printf("长度:%d,容量:%d\n", len(arr2[:]), cap(arr2[:])) //容量超过1024 ,扩容问1.25倍 1024*1.25=1280 arr2NewSlice := append(arr2[:], 1024) log.Printf("长度:%d,容量:%d\n", len(arr2NewSlice), cap(arr2NewSlice))
输出:
2021/05/08 18:18:27 长度:4,容量:4
2021/05/08 18:18:27 长度:5,容量:8
2021/05/08 18:18:27 长度:1024,容量:1024
2021/05/08 18:18:27 长度:1025,容量:1280
相关文章
- 杂想之一个C++内存泄露案例
- Git常用命令
- Gridea Hexo Hugo 等 git push 同步到多个仓库
- 解决GoLand无法Debug
- 三天上手Go以及实战Gin+Gorm
- Typecho 迁移到 Hugo
- GitHub Actions 自动部署 Hexo 脚本
- Hugo .GitInfo 的替代方案
- Gitea 安装备忘
- 一个整数+1,攻破了Linux内核!
- 我在Github上发现了一个好东西!
- 如何将 Power BI 模板化,一键构建出一切
- PowerBI 四象限通用分析模式系列之一
- 微软宣布:PowerBI 已经与 Office 整合,一切更简单,变革又来了
- 业财融合用PowerBI怎么搞?一个案例一本书用二十四个模块告诉你答案
- Power BI 大换皮肤,迎来更新
- Power BI 量本利营亏平衡分析模型
- PowerBI 统一数据建模最佳实践 - 框架篇
- 使用Django快速搭建reportServer
- go-redis版本不一致导致CPU使用率问题