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语言实战指南》] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

医院大楼用粘滞阻尼器300KN厂家报价(医院用的粘胶叫什么)

本文将针对300KN粘滞阻尼器在医院的运用,对其厂家报价进行分析。粘滞阻尼器不仅能够提高建筑的抗震性能,还能降低室内噪音,为患者提供更加舒适的治疗环境。 300KN粘滞阻尼器在提高医院大楼抗震性能和舒适性方…

医院大楼用粘滞阻尼器300KN厂家报价(医院用的粘胶叫什么)

道德经有关人物的名字有哪些?2025年最新解读(道德经的主要人物)

道德经》作为道家经典,塑造了老子这一核心人物形象。本文系统解析道德经有关人物的名字及其文化意义,结合2025年新趋势,帮助读者深入理解道家思想根源与历史影响。 《道德经》中主要人物为老子,他是道家思想的奠基者。此外,文中也提到“圣人”“上

道德经有关人物的名字有哪些?2025年最新解读(道德经的主要人物)

四喜》里这个一晃而过的女演员,其实是30年前的顶流女『明星』️(四喜是啥)

在众多实力派中,有一位惊鸿一瞥的客串演员,她的出现勾起了不少观众的回忆。 剧中有一场戏令人印象深刻:大倪妈与沈明珠的母亲闲聊,言语间满是羡慕对方找到了乘龙快婿,转而想到自己女儿恋情屡屡受挫,那份焦虑与无奈,…

《<strong>四喜</strong>》里这个一晃而过的女演员,其实是30年前的顶流女『明星』️(四喜是啥)

溶剂水性漆灌装机-1千克自动多头灌装机(溶剂水性漆灌装工艺)

灌装范围:1~10L(L桶) 2、灌装量和灌装速度调整简单,设有无瓶不灌装功能;料斗配液位自动控制系统,补料方便,保证灌装的稳定持续。 3、本机灌装采用活塞容积计量,灌装精度高,当容器到达预定灌装位置后…

溶剂水性漆灌装机-1千克自动多头灌装机(溶剂水性漆灌装工艺)

供应链风向突变:iPhone 17 Pro弃用国产屏,尴尬了谁?(供应链风向突变是指)

按照消息源说法,京东方计划在2025年第三季度初向苹果供应1000多万块iPhone 17 ProOLED屏幕,但是未能解决技术问题,导致这些面板可靠性、良率与性能无法满足苹果对LTPO OLED面板的性…

供应链风向突变:iPhone 17 Pro弃用国产屏,尴尬了谁?(供应链风向突变是指)