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

猜你喜欢

痛失『英伟达』18A订单?英特尔股价应声下跌(『英伟达』吧)

现在传来一个不好的消息,『英伟达』(NVIDIA)在测试过Intel 18A工艺生产『芯片』后,最终未推进合作。 『英伟达』弃用Intel18A工艺还带来一层隐忧,Intel 18A是真的存在缺陷么,会对即将发布Pan…

痛失『英伟达』18A订单?英特尔股价应声下跌(『英伟达』吧)

米家电动剃须刀🪒S600:都市精英的精致剃须艺术(米家电动剃须刀🪒s300拆解)

与传统剃须刀🪒不同,S600采用高档金属机身设计,握在手中的第一感觉就是沉稳与质感。重量控制在恰到好处的168g,既不会轻飘飘缺乏存在感,也不会让晨间剃须变成手腕锻炼。 普通剃须刀🪒的马达转速通常在7000转…

米家电动剃须刀🪒S600:都市精英的精致剃须艺术(米家电动剃须刀🪒s300拆解)

哪家金属波纹管专业?衡水汇德路桥材料来助力(波纹金属软管品牌)

专业的厂家通常具备先进的生产工艺和设备,能够保证产品质量稳定。该公司作为实体源头厂家,金属波纹钢涵管有质量证书,生产快,还有专有运输物流。 有客户评价,使用衡水汇德路桥材料有限公司的金属波纹钢涵管后,施工效…

哪家金属波纹管专业?衡水汇德路桥材料来助力(波纹金属软管品牌)

石英玻璃灯罩加工工艺,2025紫外杀菌灯具市场前景如何?(石英玻璃灯泡)

随着公共卫生意识提升,高透紫外UVC LED灯罩在杀菌领域大放异彩。本文详解其加工工艺、应用场景与未来发展趋势,助您精准选型。

石英玻璃灯罩加工工艺,2025紫外杀菌灯具市场前景如何?(石英玻璃灯泡)

2025复古风潮下,如何选配清酒吧转角U型沙发茶几?打造夜场会所新体验(2020复古流行趋势)

2025年复古风席卷夜场娱乐市场,清酒吧转角U型沙发茶几正成为新宠。本文深入分析其设计亮点、定制要点及应用场景,帮助您挑选最适合的产品。无论是打造高端KTV包厢还是复古音乐餐厅,了解这些细节都将助您提升空间品质。 在2025年复古风潮席卷各

2025复古风潮下,如何选配清酒吧转角U型沙发茶几?打造夜场会所新体验(2020复古流行趋势)