golang切片类型
切片slice
- 其本身并不是数组,它指向底层的数组
- 作为变长数组的替代方案,可以关联底层数组的局部或全部
- 为引用类型
- 可以直接创建或从底层数组获取生成
- 使用len()获取元素个数,cap()获取容量
- 一般使用make()创建
- 如果多个slice指向相同底层数组,其中一个的值改变会影响全部
- make([]T,len,cap)
- 其中cap可以省略,则和len的值相同
- len表示存数的元素个数,cap表示容量
slice的定义方式
package mainimport ("fmt"
)func main() {/*a := [10]int{}fmt.Println(a)s1 := a[5:]// s1 := a[5:len(a)]// s1 := a[5:10]fmt.Println(s1)*/s1 := make([]int,3,10)fmt.Println(s1,len(s1),cap(s1))
}
slice与底层数组的对应关系
Reslice
- reslice时索引以被slice的切片为准
- 索引不可以超过被slice的切片的容量cap()值
- 索引越界不会导致底层数组的重新分配而是引发错误
Append
- 可以在slice尾部追加元素
- 可以将一个slice追加到slice的容量则返回原始slice
- 如果最终长度未超过追加到slice的容量则返回原始slice
- 如果超过追加到的slice容量则将重新分配数组并拷贝原始数据
copy
package mainimport ("fmt"
)func main() {s1 := []int{1,2,3,4,5,6}s2 := []int{7,8,9}// copy(s2,s1)copy(s2[2:4],s1[1:3]) // s2: dest, s1: srcfmt.Println(s2)
}
转载于:https://www.cnblogs.com/Csir/p/9292146.html
golang切片类型相关推荐
- Golang 任意类型切片的增删改查
文章目录 1.增加元素 1.1 使用 []interface{} 实现 1.2 使用 interface{} 实现 1.3 使用 interface{} 的优雅实现 2.删除元素 3.修改元素 4.查 ...
- golang切片内存应用技巧
在 Go 语言中切片是使用非常频繁的一种聚合类型,它代表变长的序列,底层引用一个数组对象.一个切片由三个部分构成:指针.长度和容量.指针指向该切片自己第一个元素对应的底层数组元素的内存地址. 切片的类 ...
- golang值类型与引用类型的区别
1.golang值类型与引用类型的区别 1.1 本质存储区别 值类型与引用类型的区别主要在于: 值类型的变量: 存储当前类型的存储的数据.值类型包括数值类型.bool.string.数组.struct ...
- golang枚举类型 - iota用法拾遗
在c#.java等高级语言中,经常会用到枚举类型来表示状态等.在golang中并没有枚举类型,如何实现枚举呢?首先从枚举的概念入手. 1.枚举类型定义 从百度百科查询解释如下:http://baike ...
- golang 切片排序
目录 方法1.匿名函数实现切片排序 方法2.接口实现切片排序 方法1.匿名函数实现切片排序 package mainimport ("fmt""sort" )t ...
- golang 获取struct类型_聊聊golang的类型断言
序 本文主要研究一下golang的类型断言 类型断言 x.(T) 断言x不为nil且x为T类型 如果T不是接口类型,则该断言x为T类型 如果T类接口类型,则该断言x实现了T接口 实例1 func ma ...
- Golang——切片使用大全(创建、初始化、遍历、截取、修改、添加、切片的copy、切片作为函数参数、切片求和、切片求最大值)
概念: 切片出现的原因也是因为数组的可操作性不高.切片的长度是不固定的,可以追加数据,可以理解切片是一个动态数组,切片的底层是一个结构体 切片类型(slice)本身并不是动态数组或数组指针.它内部通过 ...
- golang切片转为字符串,字符串转切片
golang切片转为字符串,字符串转切片 package mainimport ("fmt""strings" )func main() {s := []str ...
- Go : 与切片类型处理相关的代码(附完整源码)
Go : 与切片类型处理相关的代码 package codegenfunc SliceClear(s []int) []int {// amd64:`.*memclrNoHeapPointers`fo ...
最新文章
- Exchange服务器系列课程之四--管理Exchange收件人
- 刷题两个月,从入门到字节跳动offer,这是我的模板 | GitHub 1.2k星
- AI高分通过美国8年级科学考试:常识题推理题都能行,不服可同台对战
- Hadoop,Yarn,Zookeeper,kafka数据仓库集群命令集合
- export命令添加和删除环境变量
- getch和getchar的区别
- 使用Nacos配置中心云端化本地application.properties
- 【地图API】为何您的坐标不准?如何纠偏?
- Docker 为什么输给了Kubernetes?Docker 员工自述!
- charset参数 sqluldr2_sqluldr2 oracle直接导出数据为文本的小工具使用
- LabVIEW进制转换总结
- java虚拟机参数 -D、-X和-XX的区别
- postgresql 随笔
- 在伦敦金中学画趋势线
- 阿里云视觉智能开放平台产品上新——能力前瞻
- 豆瓣即将上映电影爬虫作业
- [转][类似我] 某作者结合自己性格对盖洛普的推广
- 【Sys】不能打开要写入的文件:“X:\Y\Z.xx“单击[Abort]放弃安装,[Retry]重新尝试写入文件,或[Ignore]忽略这个文件。
- ppt计算机考试总结,计算机二级PPT考点与做题技巧汇总
- Android笔记-Linux Kernel Ftrace (Function Trace)解析
热门文章
- git创建一个自己的本地仓库
- 华为鸿蒙系统游戏体验,华为鸿蒙系统首发体验,游戏加载比安卓快60%,全面苹果挑战iOS...
- matlab如何把实验结果记录在文件中,实验一Matlab基本操作
- the android sdk location cannot be at the filesystem root
- MediaCodec 编码时间戳问题
- 关于计算机犯罪的英语作文,关于信息安全的英语作文范文
- 我的内核学习笔记10:Intel GPIO驱动源码分析
- 屏蔽tomcat服务器报错信息,tomcat 屏蔽网络爬虫
- python游戏编程快速上手豆瓣_Python游戏编程快速上手(第4版)
- 【Kafka】kafka 创建 topic的时候 Replication factor 参数理解