切片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切片类型相关推荐

  1. Golang 任意类型切片的增删改查

    文章目录 1.增加元素 1.1 使用 []interface{} 实现 1.2 使用 interface{} 实现 1.3 使用 interface{} 的优雅实现 2.删除元素 3.修改元素 4.查 ...

  2. golang切片内存应用技巧

    在 Go 语言中切片是使用非常频繁的一种聚合类型,它代表变长的序列,底层引用一个数组对象.一个切片由三个部分构成:指针.长度和容量.指针指向该切片自己第一个元素对应的底层数组元素的内存地址. 切片的类 ...

  3. golang值类型与引用类型的区别

    1.golang值类型与引用类型的区别 1.1 本质存储区别 值类型与引用类型的区别主要在于: 值类型的变量: 存储当前类型的存储的数据.值类型包括数值类型.bool.string.数组.struct ...

  4. golang枚举类型 - iota用法拾遗

    在c#.java等高级语言中,经常会用到枚举类型来表示状态等.在golang中并没有枚举类型,如何实现枚举呢?首先从枚举的概念入手. 1.枚举类型定义 从百度百科查询解释如下:http://baike ...

  5. golang 切片排序

    目录 方法1.匿名函数实现切片排序 方法2.接口实现切片排序 方法1.匿名函数实现切片排序 package mainimport ("fmt""sort" )t ...

  6. golang 获取struct类型_聊聊golang的类型断言

    序 本文主要研究一下golang的类型断言 类型断言 x.(T) 断言x不为nil且x为T类型 如果T不是接口类型,则该断言x为T类型 如果T类接口类型,则该断言x实现了T接口 实例1 func ma ...

  7. Golang——切片使用大全(创建、初始化、遍历、截取、修改、添加、切片的copy、切片作为函数参数、切片求和、切片求最大值)

    概念: 切片出现的原因也是因为数组的可操作性不高.切片的长度是不固定的,可以追加数据,可以理解切片是一个动态数组,切片的底层是一个结构体 切片类型(slice)本身并不是动态数组或数组指针.它内部通过 ...

  8. golang切片转为字符串,字符串转切片

    golang切片转为字符串,字符串转切片 package mainimport ("fmt""strings" )func main() {s := []str ...

  9. Go : 与切片类型处理相关的代码(附完整源码)

    Go : 与切片类型处理相关的代码 package codegenfunc SliceClear(s []int) []int {// amd64:`.*memclrNoHeapPointers`fo ...

最新文章

  1. Exchange服务器系列课程之四--管理Exchange收件人
  2. 刷题两个月,从入门到字节跳动offer,这是我的模板 | GitHub 1.2k星
  3. AI高分通过美国8年级科学考试:常识题推理题都能行,不服可同台对战
  4. Hadoop,Yarn,Zookeeper,kafka数据仓库集群命令集合
  5. export命令添加和删除环境变量
  6. getch和getchar的区别
  7. 使用Nacos配置中心云端化本地application.properties
  8. 【地图API】为何您的坐标不准?如何纠偏?
  9. Docker 为什么输给了Kubernetes?Docker 员工自述!
  10. charset参数 sqluldr2_sqluldr2 oracle直接导出数据为文本的小工具使用
  11. LabVIEW进制转换总结
  12. java虚拟机参数 -D、-X和-XX的区别
  13. postgresql 随笔
  14. 在伦敦金中学画趋势线
  15. 阿里云视觉智能开放平台产品上新——能力前瞻
  16. 豆瓣即将上映电影爬虫作业
  17. [转][类似我] 某作者结合自己性格对盖洛普的推广
  18. 【Sys】不能打开要写入的文件:“X:\Y\Z.xx“单击[Abort]放弃安装,[Retry]重新尝试写入文件,或[Ignore]忽略这个文件。
  19. ppt计算机考试总结,计算机二级PPT考点与做题技巧汇总
  20. Android笔记-Linux Kernel Ftrace (Function Trace)解析

热门文章

  1. git创建一个自己的本地仓库
  2. 华为鸿蒙系统游戏体验,华为鸿蒙系统首发体验,游戏加载比安卓快60%,全面苹果挑战iOS...
  3. matlab如何把实验结果记录在文件中,实验一Matlab基本操作
  4. the android sdk location cannot be at the filesystem root
  5. MediaCodec 编码时间戳问题
  6. 关于计算机犯罪的英语作文,关于信息安全的英语作文范文
  7. 我的内核学习笔记10:Intel GPIO驱动源码分析
  8. 屏蔽tomcat服务器报错信息,tomcat 屏蔽网络爬虫
  9. python游戏编程快速上手豆瓣_Python游戏编程快速上手(第4版)
  10. 【Kafka】kafka 创建 topic的时候 Replication factor 参数理解