Go语言里的slice
2024-08-30 14:53:53
1.切片是基于数组做的一层封装,灵活能够自动扩容。
2.切片的初始化方法
①直接创建
②基于已有的数组或切片
③使用make来创建一个切片
第一个5是切片的大小
第二个5是切片的容量
3.基本操作
①获取元素
②增加元素append
当达到底层的最大容量,切片会进行扩容,扩容的策略是翻倍扩容。
下图说明扩容之后,地址也变化了。
4.切片的修改
和数组(值传递)不一样,切片相当于是一个引用传递。
5.如果计算切片的容量?
例如:b切片的长度和容量是多少?
答案: 长度为2 容量为7
详细可以参考下面图,a、b共用底层切片,但是b是从1开始的,长度为3-1 =2,容量为a其他的底层
6.切片后面追加切片
func AppendSlice(){
slice1 := []int{1,2,3}
slice2 := []int{3,3,6} slice1 = append(slice1,slice2... ) for _, value := range slice1 {
fmt.Println("value的地址",value)
} }
注意一下 append(slice1,slice2... ) 这个...定义就是把slice2展开,放到slice1后面。
最新文章
- WPF 自定义Expander
- Hibernate创建hqll时报错
- P1038 神经网络
- join()、implode()函数
- 解决连接Oracle 11g报ORA-01034和ORA-27101的错误
- CollectionView添加头尾部
- 【转】VC++与MySQL数据库的连接
- [Oracle] Group By 语句的扩展 - Rollup、Cube和Grouping Sets
- [转] HTML5终极备忘大全(图片版+文字版)---张鑫旭
- APUE 读书笔记 -----孤儿进程与僵尸进程[总结] +数据结构+C
- python 学习笔记(一)
- cocos2d-x3.x屏蔽遮罩层屏蔽触摸button
- Andrew Ng机器学习课程笔记--week5(下)
- springboot(十九):使用Spring Boot Actuator监控应用
- 【Elasticsearch全文搜索引擎实战】之Kibana搭建
- Mybatis框架入门
- com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server 报错问题
- LeetCode算法题-K-diff Pairs in an Array(Java实现)
- Spark源码剖析 - SparkContext的初始化(八)_初始化管理器BlockManager
- z-index注意事项
热门文章
- es6涉及的那点东西
- C#学习笔记之值类型与引用类型
- python之循环(增删)内使用list.remove()
- 3.SDL落地方案
- .NET Core 学习笔记3——EF Core
- Python使用Plotly绘图工具,绘制饼图
- 阿里云安装MySQL5.7
- 报错TypeError: $(...).live is not a function解决方法
- linux的常用命令介绍
- 牛津初阶字典单词F-联想故事