文章目录
一、Slice介绍
Slice称为动态数组或切片,底层是数组实现,实际使用比数组更加灵活,可以方便地进行扩容和传递。
二、初始化
字面量声明
var s []int // 变量声明
s1 := []int{
} // 空切片
s2 := []int{
1,2,3}
函数声明
s1 := make([]int,12) // 指定长度
s2 := make([]int,10,20) // 指定长度和容量
s3 := *new([]int) // 空切片
三、特性
1. 切取
切片可以基于其他数组或切片创建,且与原数组和切片共享底层空间,修改切片会影响原数组或切片。
2. 切片表达式
简单表达式
slice := a[low:high]
其中切片长度等于 high - low,容量长度等于底层数组的长度,其中 low 和 high 可以省略。
这种表达式存在两个问题
- 一是在切片使用 appen() 方法追加元素时,大概率会篡改后续元素;
- 二是扩容后的切片底层数组可能不是原数组了。