Go 切片(slice)是一个动态的、可变长的序列,由指向数组的指针、切片长度和切片容量三个组成部分构成。切片可以看做是一个动态数组,可以根据需要进行扩展或缩短,是对数组的封装,底层实现是一个由指向数组的指针、切片长度和切片容量三个部分组成的结构体。切片可以对数组进行操作,比如对原数组的子序列进行截取、追加元素等操作,而不需要对原数组进行拷贝或重新分配空间。切片是 Go 语言中非常常用且实用的数据类型之一。

7 min read

切片的长度(length)表示切片中实际存储的元素个数,切片的容量(capacity)表示切片底层数组中从切片的第一个元素位置到最后一个元素位置的元素个数。切片通过对数组的引用和指针操作来实现对数组的修改,因此对切片的修改会直接反应到底层的数组中,从而可以方便地修改数组中元素的值。

切片的声明方式如下:

var slice []type

其中 type 表示切片中元素的数据类型,slice 为切片的名称。可以使用 make 函数来创建一个切片,并指定其长度和容量:

slice := make([]type, length, capacity)

其中 type 表示切片中元素的数据类型,length 表示切片的长度,capacity 表示切片的容量。如果不指定切片的容量,则使用切片的长度作为容量。

切片的操作包括以下几种:

  • 切片的截取:使用 slice[start:end] 表示对 slice 切片,其中 start 和 end 分别表示截取的起始位置(包含)和结束位置(不包含)。
  • 切片的追加:使用 append 函数向 slice 中添加元素,可以同时添加多个元素。
  • 切片的复制:使用 copy 函数将一个切片复制到另一个切片中。

切片在 Go 语言中被广泛使用,可以作为参数传递给函数,也可以作为函数的返回值。通过对切片的灵活运用,可以实现高效地操作数据的目的。