Go的学习路程:数组(二)|Go 主题月

101 阅读2分钟

上一篇文章学习了数组的定义,以及如何定义一个一维数组。

多维数组定义

在实际编程过程中,一维数组不能够应对所有情况。有时候就需要使用多维数组来解决问题。

arr1 := [4]int // 定义一个一维数组
arr2 := [2][4]int // 定义一个 2 行 4 列的二维数组
arr3 := [][3]int{[3]int{1, 2, 3}, [3]int{4, 5, 6}} // 通过初始化的方式声明并赋值一个二维数组,其中只有第一个 [] 可以不指定长度,其余的都需要指定长度。
arr4 := [][2][3]int{[2][3]int{[3]int{1, 2, 3}, [3]int{2, 3, 4}}, [2][3]int{[3]int{1, 2, 3}, [3]int{2, 3, 4}}} // 通过初始化的方式声明并赋值一个三维数组

元素访问

可以使用数组下标来访问数组中的元素。数组下标从0开始,数组长度-1 则表示最后一个元素的下标,len(arr) - 1。

计算数组长度

可以使用 Go 内建函数 len 来计算数组的长度

func main() {
    arr := []int{1, 3, 5, 7, 9}
    fmt.Println(len(arr)) // 5
}

我们可以通过 arr[index] 的方式来访问数组中的元素。其中 arr 表示一个数组,index 表示要访问元素的组数下标。

正常访问

package main
import "fmt"

func main() {
    arr := []int{1, 3, 5, 7, 9}
    for i:=0; i<len(arr); i++ {
            fmt.Print(arr[i])
    }
}

程序会输出 13579,i 代表每次循环要访问元素的数组下标。i 在本例中的值分别为 0、1、2、3、4。

通过 range 访问

package main
import "fmt"

func main() {
    arr := []int{1, 3, 5, 7, 9}
    for i, e := range arr {
        fmt.Printf("index: %d, value: %d\n", i, e)
    }
}

如上代码会输出如下内容

index: 0, value: 1
index: 1, value: 3
index: 2, value: 5
index: 3, value: 7
index: 4, value: 9

range 具有两个返回值,第一个返回值 i 是元素的数组下标,第二个返回值 v 是元素的值。

元素赋值

数组初始化完成后内的元素不是一成不变的,我们可以通过数组下标对数组指定位置的元素进行替换。

func main() {
    arr := []int{1, 3, 5, 7, 9}
    arr[2] = 6
    fmt.Println(arr) // 13679 原来位置的元素 5 被替换成了新的元素 6
}