Go语言之切片的原理与用法 - 《Go语言实战指南》

Go语言之切片的原理与用法 - 《Go语言实战指南》

切片(slice)是 Go 语言中用于处理变长数据集合的核心结构,是在数组之上的一个轻量抽象,使用起来更灵活、高效,是日常开发中使用最多的数据类型之一。

一、什么是切片

切片是对数组的一个连续片段的引用,其本质是一个三元组

  • • 指向底层数组的指针
  • • 切片的长度(len)
  • • 切片的容量(cap)

二、切片的声明与初始化1. 从数组或切片派生arr := [5]int{1,2,3,4,5}s1 := arr[1:4]// 包含索引1到3,不包含4fmt.Println(s1)// [2 3 4]2. 使用 makes2 :=make([]int,3,5)// 长度为3,容量为5fmt.Println(s2)// [0 0 0]3. 使用字面量s3 := []string{"go","java","rust"}

三、切片的基本操作1. 访问元素s := []int{10,20,30}fmt.Println(s[1])// 202. 修改元素s[1] =993. 遍历切片fori, v :=ranges { fmt.Printf("Index %d: %d\n", i, v)}

四、切片的长度与容量s := []int{1,2,3,4,5}sub := s[1:3]fmt.Println(len(sub))// 2fmt.Println(cap(sub))// 4(从索引1到数组末尾)

五、切片的扩容

当切片容量不足时,使用 append 会自动扩容:

s := []int{1,2}s =append(s,3,4,5)fmt.Println(s)// [1 2 3 4 5]

注意:append 可能导致切片指向新的底层数组。

六、切片之间的共享与副本

多个切片可能共享同一个底层数组:

arr := [5]int{1,2,3,4,5}s1 := arr[1:4]s2 := arr[2:5]s1[1] =99fmt.Println(arr)// [1 2 99 4 5]fmt.Println(s2)// [99 4 5]

如果需要独立副本,可使用 copy:

dst :=make([]int,len(s1))copy(dst, s1)

七、切片是引用类型

函数传参时,修改切片会影响原始数据(因为底层数组是共享的):

funcmodify(s []int) { s[0] =100}a := []int{1,2,3}modify(a)fmt.Println(a)// [100 2 3]

八、删除切片元素

Go 没有内建删除函数,可以用切片拼接模拟:

特别声明:[Go语言之切片的原理与用法 - 《Go语言实战指南》] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

当鞍马遇见钢管:《翻滚吧!阿信》如何用肉体革命诠释励志

体操长镜头:阿信的鞍马全套动作采用一镜到底,拍摄 37 次才成功,导演刻意保留彭于晏因疲劳导致的轻微晃动,这种 "不完美"被《电影艺术》评为 "超越励志片的真实美学"。

当鞍马遇见钢管:《翻滚吧!阿信》如何用肉体革命诠释励志

天蝎座洁癖还是PUA?26岁四婚韩安冉:男人出轨看钱够不够(12星座天蝎座洁癖最严重吗)

有人觉得这是爱情专属密码,也有人酸他是变相PUA——毕竟韩安冉26岁就经历了四段婚姻。最离谱的是,有网友翻出两人直播画面,发现宋浩然嘴上说着"韩朵朵",手上动作比谁都亲热,这波反差萌直接让评论区炸锅。 最

天蝎座洁癖还是PUA?26岁四婚韩安冉:男人出轨看钱够不够(12星座天蝎座洁癖最严重吗)

别再只刷BOSS了!这3个冷门招聘软件回复率超高

鱼泡直聘:互动及时的综合招聘平台鱼泡直聘作为综合类招聘平台,不仅岗位丰富,覆盖白领和蓝领多个领域,其高回复率更是让不少求职者青睐。其中,鱼泡直聘凭借及时的互动机制、丰富的岗位和广泛的覆盖,在高回复率的基础上…

别再只刷BOSS了!这3个冷门招聘软件回复率超高

小米相册回收站彻底删除能找回吗(小米相册回收站怎么关闭)

小米云服务备份:如果你的小米手机开启了云服务,并且照片在删除前已经同步到云端,那么你可以在小米云服务中找回这些照片。需要注意的是,云服务回收站也有保留期限,通常也是30天。 本地数据恢复软件:如果未开启…

小米相册回收站彻底删除能找回吗(小米相册回收站怎么关闭)

中国铁工投资集团原董事长张建国去世 享年61岁(中国铁工投资建设集团有限公司官网怎么样)

8月3日,中国铁工投资建设集团有限公司党委原书记、原董事长张建国因病在北京逝世,享年61岁。张建国曾担任中国铁工投资建设集团有限公司党委书记、董事长及法定代表人

中国铁工投资集团原董事长张建国去世 享年61岁(中国铁工投资建设集团有限公司官网怎么样)