切片slice

68 阅读1分钟

一、概念

对数组连续片段的引用,属于引用类型。一般用于快速地操作一块数据集合

image.png

二、声明

slice [开始位置:结束位置]

  • slice:目标切片对象
  • 开始、结束位置:对应目标切片对象的索引

image.png

使用make关键字

image.png

三、使用特性

  • 取出的元素数量=结束位置-开始位置
  • 取出的元素不包含最后位置对应的索引,切片最后一个元素获取:slice[len(slice)-1]
  • 越界会报错,最后一个位置的数字不能大于数组长度/元素个数
  • 缺省可以用空格:arr[ : ]、arr[ : number]、arr[number: ]
  • 空切片:arr[0:0],一般用于切片复位

image.png

四、切片复制

格式:

copy(destSlice []T, srcSlice []T) int
  • 括号内是两个参数(目标切片在前,源切片在后),参数类型必须都是同类型切片([]T);
  • 返回值是 int 类型,表示「实际复制的元素个数」(由两个切片长度的较小值决定);
  • 注意:参数间用逗号分隔,切片类型不需要重复写(同类型即可)
  1. 当元素是基本类型(如 intstring)时,copy 会复制 “值本身”,修改目标切片不影响源切片(深拷贝)

image.png

  1. 当元素是引用类型(如切片、map、指针)时,copy 仅复制 “引用(内存地址)”,修改目标切片会影响源切片(浅拷贝)

五、切片扩容

使用append新增切片的元素

容量不够: image.png

容量够:

image.png