Go语言之切片的原理与用法 - 《Go语言实战指南

Go语言之切片的原理与用法 - 《<strong>Go语言实战指南</strong>》

切片(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 大模型赋能、全渠道整合以及强大的行业定制化能力等突出优势,成功在排行榜中占据领先地位,为出海企业提供了高效、智能、个性化的客服解决方案,助力…

沃丰科技在出海智能客服系统赛道的突围之路(沃丰科技是做什么的)

『陈晓』故意放不忠诚假消息!逼『陈妍希』离婚,净身出户只为和『赵丽颖』复合(『陈晓』回应)

『陈晓』和『陈妍希』,两个儿人前可温馨得很,哪个粉丝不是早晚上晚安都要@一下两位,想着他们的爱情故事睡个好觉。可现在,加个『赵丽颖』进来,这故事算是怎么回事儿? 所以说,咱旁观者清,看这热闹是热闹,但老话说得好,家家有本…

『陈晓』故意放不忠诚假消息!逼『陈妍希』离婚,净身出户只为和『赵丽颖』复合(『陈晓』回应)

后续!海南呼吁广大船东船长搜寻试验无人机,网友评论区炸锅!(海南呼叫)

希望渔民们能‘好运’,能找到这架‘神秘的无人机’,也希望这事儿,能有个‘圆满的结局’。” 感谢您阅读这篇‬文章‬,我们希望能够为您提供有价值的信息和观点,如果您对这起事件有什么看法或想法,欢迎在下方评论区发表…

后续!海南呼吁广大船东船长搜寻试验无人机,网友评论区炸锅!(海南呼叫)

货车拉13头猪有11头“越狱” 好心司机鸣笛提醒(大卡车拉猪)

在345国道河南上蔡至西平段,一辆货车拉着13头猪,在2公里的路程中,有11头猪跳下车。货车司机张先生表示非常感谢后车司机提醒,已找回10头猪,还有一头没有找到。根据网友发布的视频显示,这辆货车行驶在河南驻马店某国道上,车厢里装了十几头猪

货车拉13头猪有11头“越狱” 好心司机鸣笛提醒(大卡车拉猪)

L415Q无缝管L415Q无缝钢管(管材l415)

从采购建议角度,用户在选购L415Q无缝钢管时应重点关注以下几个因素:首先,确认供应商的生产资质和业绩,优先选择具有API会标使用权的厂家;其次,根据实际使用环境确定钢管的尺寸规格和技术要求;再次,比较不同厂…

L415Q无缝管L415Q无缝钢管(管材l415)