Go语言特性深入探索
1. 切片(Slices)
在Go语言中,数组的长度是其类型的一部分,例如 [10]int
。这就带来一个问题:如何编写一个能接受任意大小整数数组的函数呢?Go引入了切片(slice)的概念来解决这个问题。切片是底层物理数组的一部分元素的范围。
1.1 切片的组成
切片包含三个部分:
1. 指向起始元素的指针。
2. 切片中元素的数量( len
)。
3. 切片的容量( cap
),它由底层数组的长度推导得出,具体计算方式为底层数组的长度减去切片的起始索引加一。
1.2 切片的创建
可以通过切片字面量或内置函数 make
来创建切片。示例如下:
package main
import "fmt"
func Example() {
// 使用切片字面量创建切片
sliceLiteral := []int{1, 1, 2, 3, 5, 8, 13}
fmt.Println(len(sliceLiteral), cap(sliceLiteral))
// 使用 make 函数创建切片
sliceMake := make([]int, 5, 8)
fmt.Println(len(sliceMake), cap(sliceMake))
}
1.3 切片的操作
可以使用内置函数