1.切片截取:
操作 | 含义 |
s[n] | 切片s中索引位置为n的项 |
s[:] | 从切片s的索引位置0到len(s)-1处所获得的切片 |
s[low:] | 从切片s的索引位置low到len(s)-1处所获得的切片 |
s[:high] | 从切片s的索引位置0到high处所获得的切片,len=high |
s[low:high] | 从切片s的索引位置low到high处所获得的切片,len=high-low |
s[low:high:max] | 从切片s的索引位置low到high处所获得的切片,len=high-low,cap=max-low |
len(s) | 切片s的长度,总是<=cap(s) |
cap(s) | 切片s的容量,总是>=len(s) |
2.示例说明:
array := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
操作 | 结果 | len | cap | 说明 |
array[:6:8] | [0 1 2 3 4 5] | 6 | 8 | 省略 low |
array[5:] | [5 6 7 8 9] | 5 | 5 | 省略 high、 max |
array[:3] | [0 1 2] | 3 | 10 | 省略 high、 max |
array[:] | [0 1 2 3 4 5 6 7 8 9] | 10 | 10 | 全部省略 |
3.append函数:向 slice 尾部添加数据,返回新的 slice 对象。
var s1 []int
//创建nil切换
//
s1 := make([]int, 0)
s1 =
append(
s1
,
1
)
//追加1个元素
s1 =
append(
s1
,
2, 3
)
//追加2个元素
s1 =
append(
s1
,
4, 5, 6
)
//追加3个元素
fmt.Println(s1)
//[1 2 3 4 5 6]
s2 := make([]int,
5
)
s2 =
append(s2,
6
)
fmt.Println(s2)
//[0 0 0 0 0 6]
s3 := []int{1, 2, 3}
s3 =
append(s3,
4, 5
)
fmt.Println(s3)
//[1 2 3 4 5]
|
4.copy函数:将一个 slice 内容复制到另外一个 slice 中。
data := [...]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
//这是数组
s1 :=
data[
8
:]
//{8, 9}
s2 :=
data[:
5
]
//{0, 1, 2, 3, 4}
copy(
s2
,
s1
)
//将s1内容复制到s2中,对应下标的数据将被修改
fmt.Println(s2)
//[8 9 2 3 4]
//因为切片是地址传递,所以将会改变原始数组
fmt.Println(data)
//[8 9 2 3 4 5 6 7 8 9]
|