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]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值