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

猜你喜欢

AI文章怎么降低AI率?高效去AI化原创标题技巧(ai怎么降低图片大小)

您的目标是每天发bu一定数量的、高质量的原创文章,内容不仅专业可靠,而且要避免机械的AI痕迹,能真正吸引读者并建立信任。 3. 相关度优化:开启“当正文中出现当前源关键词时,自动把该关键词加粗”,以及“在正…

AI文章怎么降低AI率?高效去AI化原创标题技巧(ai怎么降低图片大小)

173大美女『宋佳』再出神图!撞色帆布夹克+蓝色牛仔裤👖,青春又靓丽!(美女演员『宋佳』)

这次她换了一身温柔又帅气的春日感『穿搭』,既能展现大骨架美女的身材曲线,又具有帅气的英气感!这次『宋佳』的『穿搭』借鉴度也很高,她身穿一款撞色棉质帆布夹克、内搭白色平纹针织罗纹棉质背心,下半身搭配70 年代风格蓝色牛仔裤👖…

173大美女『宋佳』再出神图!撞色帆布夹克+蓝色牛仔裤👖,青春又靓丽!(美女演员『宋佳』)

凭质量口碑逆袭的《镖人》,北美依然难大卖……西方人不爱看功夫片了吗?(以质量赢口碑)

这段历史是有一定幸运性的,并且,持续的时间也确实不长,最终戛然而止后,就有了华语武侠功夫片、乃至几乎所有华语电影在北美市场失去非华人观众的近二十年。 而说回我们自己的武侠功夫电影,虽然在海外有认知度,但具…

凭质量口碑逆袭的《<strong>镖人</strong>》,北美依然难大卖……西方人不爱看功夫片了吗?(以质量赢口碑)

6次怀孕5次堕胎,终身不孕的她惨遭丈夫抛弃,嫁老外后被宠上天(6次怀孕5次堕胎可以吗)

这部作品为她打开了更为广阔的演艺道路,随后的几年里,她陆续参演了《海之恋》《风雨下钟山》等多部重要影片,她的作品不断攀升,不仅在电影市场上获得了较高的认可,观众的口碑也逐步提升,她的资源档期更是已经排到了两年…

6次怀孕5次堕胎,终身不孕的她惨遭丈夫抛弃,嫁老外后被宠上天(6次怀孕5次堕胎可以吗)

和大23岁男人同居,38岁未婚生女,爱人去世陷入纠纷,如今怎样了(和大23岁男人同居好吗)

她与一位比她年长二十余岁的伴侣携手走过漫长岁月,虽然临近四十岁时毅然决定孕育生命,经过了重重医学评估和身心调养,最终迎来了她的爱女降生;然而,他们始终没有走进民政局,没有领取那本象征法律认可的红色证书。 …

和大23岁男人同居,38岁未婚生女,爱人去世陷入纠纷,如今怎样了(和大23岁男人同居好吗)