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

猜你喜欢

泡脚包哪个牌子比较好?网上买的艾草包泡脚有用吗?十大品牌对比,榜首脱颖而出(泡脚包哪个牌子最受欢迎)

本草寻源艾草泡脚包主打纯蕲艾配方,原料选用陈放1年的湖北蕲艾,拆包可见完整艾叶,无碎渣掺杂,自然香气浓郁,适合追求单一基础暖足需求的人群。 温太医草本泡脚包侧重体寒调理,配方含艾草、干姜、当归三味核心成分,…

泡脚包哪个牌子比较好?网上买的艾草包泡脚有用吗?十大品牌对比,榜首脱颖而出(泡脚包哪个牌子最受欢迎)

男子上完厕所突然离世妻子发声 家庭重担成致命诱因

2026年1月31日,河南南阳一名30岁男子在家中厕所突然倒地,经抢救无效离世。监控画面显示他走进厕所后蹲下,再未起身

男子上完厕所突然离世妻子发声 家庭重担成致命诱因

爱泼斯坦案,美国司法部设下好大一个圈套(爱泼斯坦案文件)

打个极端的比方,如果当年我也给FBI发过一封邮件,说爱泼斯坦其实是外星人,靠吃地球人获取能量,还附上几张他与外星人秘密会面的照片,那么这封邮件和这些图片,同样会被原封不动地收录进那300万页文件里。 但其实…

爱泼斯坦案,美国司法部设下好大一个圈套(爱泼斯坦案文件)

披荆斩棘的大小姐:程金铭再演复仇女,罗雪儿比女主吸睛(披荆斩棘的大小姐)

紧接着,在古装剧《披荆斩棘的大小姐》中,程金铭再次挑战了一个复杂多面的角色——罗家二女儿罗雪儿,一位隐藏了深沉复仇心计的女子。罗雪儿从小便是母亲和妹妹的排挤对象,她与大姐罗爱莲的亲情,表面上看似亲密无间,其实…

披荆斩棘的大小姐:程金铭再演复仇女,罗雪儿比女主吸睛(披荆斩棘的大小姐)

全球首个尼帕病毒核酸快检试纸 河南10天研发出尼帕病毒快检试纸(尼帕病毒和莫迪访华)

无需送到实验室,只需掌心温度,15分钟就能居家检测。近日,河南农业大学张改平院士团队成功研发全球首个尼帕病毒RAA-LFA核酸POCT诊断产品,仅用10天时间。据今日霍州2026年1月26日报道,印度东部的西孟加拉邦出现尼帕病毒感染病例。尼

全球首个尼帕病毒核酸快检试纸 河南10天研发出尼帕病毒快检试纸(尼帕病毒和莫迪访华)