# 切片
# 1. 简介
切片(Slice)很像数组的数据结构,与数组不同的是,切片的长度可变,使用起来比较灵活。
切片底层是对数组的一层封装。
var a []string
切片不需要制定长度,声明的同时可以进行赋值。
var num = []int{1, 2, 3}
还有一个不同点是,切片是引用类型,数组是值类型。
// 数组
a := [2]int{1, 2}
b := [2]int{1, 2}
a == b // true
值类型可以直接比较,所以两个数组可以直接比较,如果两个数组大小,每一个值都相等返回 true
。
切片是引用类型,所以不能直接比较。
// 切片
a := []int{1, 2}
b := []int{1, 2}
a == b // 报错
# 2. 切片表达式
为了能够灵活操作切片,我们需要借助切片表达式。
a := []int{1, 2, 3, 4, 5}
s := a[1:3] // [2 3]
上面实例中,声明并初始化了 a
切片,又初始化了 s
切片, s
切片的内容是,截取 a
切片中索引为 1 ~ 3 的两个元素(不包括索引3)。
# 3. 切片长度
s := []int{1, 2, 3}
len(s) // 3
# 4. append 函数
借助 append
函数,能够操作 slice
。