slice
# 定义
slice表示一个拥有相同类型元素的可变长度的序列。slice通常写出[]T,其中元素的类型都是T;它看上去像没有长度的数组类型。 数组和slice是紧密关联的。slice是一种轻量级的数据结构,可以用来访问数组的部分或者全部元素,而这个数组称为slice的底层数组。slice有三个属性:指针、长度和容量。Go的内置函数len 和 cap用来返回slice的长度和容量。
func reverse(s []int) {
for i,j := 0, len(s)-1; i < j; i, j = i+1, j-1 {
s[i], s[j] = s[j], s[i]
}
}
1
2
3
4
5
2
3
4
5
slice与数组不同的是,slice无法做比较,因此不能用 == 来测试两个slice 是否拥有相同的元素。标准库里面提供了高度优化的函数bytes.Equal来比较两个字节slice([]byte)。但是对于其他类型的slice,我们必须自己写函数来比较。
func equal(x,y []string) bool {
if len(x) != len(y) {
return false
}
for i := range x {
if x[i] != y[i] {
return false
}
}
return true
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
上次更新: 2023/01/11