上一篇文章学习了数组的定义,以及如何定义一个一维数组。
多维数组定义
在实际编程过程中,一维数组不能够应对所有情况。有时候就需要使用多维数组来解决问题。
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
}