推荐答案
在 Go 语言中,可以使用 make
函数来创建切片。make
函数的语法如下:
slice := make([]T, length, capacity)
T
是切片的元素类型。length
是切片的初始长度。capacity
是切片的容量(可选参数)。
示例:
// 创建一个长度为 5,容量为 10 的 int 类型切片 slice := make([]int, 5, 10)
本题详细解读
1. make
函数的作用
make
函数用于创建切片、映射和通道。对于切片,make
会分配一个底层数组,并返回一个指向该数组的切片。
2. 切片的长度和容量
- 长度(length):切片当前包含的元素个数。
- 容量(capacity):切片底层数组从切片的第一个元素开始到数组末尾的元素个数。
3. 创建切片的示例
// 创建一个长度为 5,容量为 10 的 int 类型切片 slice := make([]int, 5, 10)
在这个例子中:
- 切片的长度为 5,意味着你可以访问
slice[0]
到slice[4]
。 - 切片的容量为 10,意味着底层数组有 10 个元素的空间,但当前只使用了前 5 个。
4. 省略容量参数
如果省略容量参数,容量将默认等于长度:
// 创建一个长度为 5,容量为 5 的 int 类型切片 slice := make([]int, 5)
5. 切片的动态扩展
切片的容量可以在运行时动态扩展。当切片的长度超过容量时,Go 会自动分配一个新的更大的底层数组,并将原有元素复制到新数组中。
slice := make([]int, 5, 10) slice = append(slice, 6) // 长度变为 6,容量仍为 10 slice = append(slice, 7, 8, 9, 10, 11) // 长度变为 11,容量可能扩展为 20
6. 注意事项
- 切片的容量是底层数组的一部分,超出容量的操作会导致底层数组的重新分配。
- 使用
make
创建的切片会自动初始化为元素类型的零值。