Go中Array和Slice的基本使用
Go中Array和Slice的基本使用
Array 数组
1. 声明数组
var arr [2]int
fmt.Println("arr -> len: ", len(arr), "cap: ", cap(arr), "values: ", arr)
arr -> len: 2 cap: 2 values: [0 0]
2. 声明数组并赋值
arr1 := [2]int{1, 2}
fmt.Println("arr1 -> len: ", len(arr1), "cap: ", cap(arr1), "values: ", arr1)
var arr2 = [2]int{3, 4}
fmt.Println("arr2 -> len: ", len(arr2), "cap: ", cap(arr2), "values: ", arr2)
arr1 -> len: 2 cap: 2 values: [1 2]
arr2 -> len: 2 cap: 2 values: [3 4]
3. 查看元素
fmt.Println("arr2[1] -> ", arr2[1])
arr2[1] -> 4
4. 赋值
arr2[1] = 5
fmt.Println("arr2[1] -> ", arr2[1])
arr2[1] -> 5
5. 遍历
for index, value := range arr2 {
fmt.Println("arr2 range -> index: ", index, "value: ", value)
}
arr2 range -> index: 0 value: 3
arr2 range -> index: 1 value: 5
Slice 切片
1. 切片声明
切片与数组声明方式非常相似,切片无需指定长度
var slice []int
fmt.Println("slice -> len: ", len(slice), "cap", cap(slice), "value: ", slice)
slice -> len: 0 cap 0 value: []
2. 切片初始化
slice1 := make([]int, 0, 10)
fmt.Println("slice1 -> len: ", len(slice1), "cap", cap(slice1), "value: ", slice1)
slice -> len: 0 cap 0 value: []
3. 从数组初始化
获取数组arr1索引从1开始后的元素
slice2 := arr1[1:]
fmt.Println("slice2 -> len: ", len(slice2), "cap", cap(slice2), "value: ", slice2)
slice2 -> len: 1 cap 1 value: [2]
4. 添加元素
slice2 = append(slice2, 3)
fmt.Println("slice2 -> len: ", len(slice2), "cap", cap(slice2), "value: ", slice2)
slice2 -> len: 2 cap 2 value: [2 3]
5. 修改元素
slice2[0] = 3
fmt.Println("slice2 -> len: ", len(slice2), "cap", cap(slice2), "value: ", slice2)
slice2 -> len: 2 cap 2 value: [3 3]
6. 遍历
for index, value := range slice2 {
fmt.Println("slice2 range -> index: ", index, "value: ", value)
}
slice2 range -> index: 0 value: 3
slice2 range -> index: 1 value: 3
7. 删除元素
切片没有提供删除元素的方法,可以使用拼接的方式。删除下标为1的元素
slice3 := append(slice2[:1], slice2[2:]...)
fmt.Println("slice3 -> len: ", len(slice3), "cap", cap(slice3), "value: ", slice3)
slice3 -> len: 1 cap 2 value: [3]
8. 重置切片
slice4 := slice3[0:0]
fmt.Println("slice4 -> len: ", len(slice4), "cap", cap(slice4), "value: ", slice4)
slice4 -> len: 0 cap 2 value: []
9. 复制切片
slice5 := make([]int, 3)
copy(slice5, []int{1, 3, 5})
fmt.Println("slice5 -> len: ", len(slice5), "cap", cap(slice5), "value: ", slice5)
slice5 -> len: 3 cap 3 value: [1 3 5]