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

猜你喜欢

2026春节必备!拜年礼盒曲奇饼干怎么做才更吸睛?(2026春节买什么)

想送家人朋友一款心意满满的拜年礼盒?自己制作曲奇饼干既温馨又有新意!本文教你如何选择配方、工具、装饰,做出令人难忘的甜品礼盒,轻松搞定送礼难题。文中还分析了2026年春节曲奇礼盒的新趋势。

2026春节必备!拜年礼盒曲奇饼干怎么做才更吸睛?(2026春节买什么)

我们熟悉的她早已离世,29岁与男友坠机而亡,双双殒命大海之中(熟悉的你们)

拍摄到一半,王玉玲因事故未能继续演绎,后由郭慧雯接替出演,尽管郭版史湘云在颜值和演技上稍显逊色,但观众普遍认为王玉玲的表现更为出色。她在早期饰演的多是些小角色,如在《蓝与黑》中饰演一名护士,她通过观察生活并将…

我们熟悉的她早已离世,29岁与男友坠机而亡,双双殒命大海之中(熟悉的你们)

InfoQ:2025年火山引擎智能视频云实践精选集(2025年火山爆发是哪个国家)

行业实践上,方案已广泛落地多领域。 未来,火山引擎将持续深化“LLM×视频云”融合,推进全息直播等场景规模化落地,通过技术迭代重塑社交、办公与远程协作体验,为AI时代企业提供坚实的视频基建支撑,共建全球智能…

InfoQ:2025年火山引擎智能视频云实践精选集(2025年火山爆发是哪个国家)

餐饮巡店别再 “无效操作”!AI 工具 1 分钟生成真实稽查表(餐饮行业巡店表)

如果你手头有纸质或电子版的稽查表,打开企鲸的 “AI 创建” 功能,对着表格拍张照,或直接上传图片、文档。点一下就能直接用,还能根据需求修改,1 分钟就能搞定专属的巡店稽查表。用企鲸,1 分钟生成你的第一…

餐饮巡店别再 “无效操作”!AI 工具 1 分钟生成真实稽查表(餐饮行业巡店表)

容易感冒的人如何调理(容易感冒的人怎么办)

容易感冒的人可以通过调整饮食、规律作息、适度运动、补充营养和中医调理等方式增强免疫力。免疫力低下可能与遗传因素、环境刺激、营养缺乏、慢性疾病及心理压力等因素有关

容易感冒的人如何调理(容易感冒的人怎么办)