Go语言中的切片(Slice)是对数组的一种抽象,它提供了一种方便且灵活的方式来操作数组。切片是对数组的引用,它包含了指向数组元素的指针、切片的长度和容量。
在Go语言中,可以通过以下几种方式创建切片:
-
使用内置的make函数创建一个切片。例如,slice := make([]int, 5, 10)创建一个初始长度为5、容量为10的整数切片。
-
使用切片的字面量创建一个切片。例如,slice := []int{1, 2, 3}创建一个包含三个整数的切片。
-
从另一个切片创建新的切片。例如,slice := oldSlice[0:3]创建一个新的切片,它包含原切片的第0个、第1个和第2个元素。
切片的长度表示切片中元素的数量,而容量表示底层数组中可以容纳的元素数量。容量不等于切片所引用的数组的长度,而是底层数组分配的空间大小。可以通过len函数获取切片的长度,通过cap函数获取切片的容量。
如何扩展或缩短切片?
可以使用内置的append函数来向切片添加元素,它会修改切片的长度和容量。也可以使用内置的copy函数将一个切片的元素复制到另一个切片,从而改变切片的长度。
切片的底层:
切片的底层是一个数组。当创建一个切片时,实际上是创建了一个指向底层数组的引用。通过修改切片中的元素,实际上是通过引用修改底层数组中的元素。因此,对切片的操作可能会影响底层数组的状态。