目录
一、普通数组
package main
import "fmt"
func main() {
var arr1 = [2][3] int {{1, 2, 3}, {4, 5, 6}}
fmt.Println(arr1)
// 数组长度自动推断
var arr2 = [][] int {{1, 2, 3}, {4, 5, 6}}
fmt.Println(arr2)
var arr3 = [][3] int {{1, 2, 3}, {4, 5, 6}}
fmt.Println(arr3)
var arr4 = [...][3] int {{1, 2, 3}, {4, 5, 6}}
fmt.Println(arr4)
// 数组元素为默认值
var arr5 = [2][3] int {}
fmt.Println(arr5) // [[0, 0, 0], [0, 0, 0]]
}
二、动态初始化
错误示例
package main
import "fmt"
func main() {
m := 2
n := 3
var arr = [m][n]int{}
fmt.Println(arr)
}
数组初始化时,数组长度不支持变量,报错信息如下
non-constant array bound n
方法1
package main
import "fmt"
func main() {
m := 2
n := 3
var arr [][]int
fmt.Println(arr) // []
for i := 0; i < m; i++ {
inner := make([]int, n)
arr = append(arr, inner)
}
fmt.Println(arr) // [[0, 0, 0], [0, 0, 0]]
}
方法2
package main
import "fmt"
func main() {
m := 2
n := 3
// 第1步,初始化二维数组,内层数组长度为0
arr := make([][]int, m)
fmt.Println(arr) // [[],[]]
// 第2步,内层数组初始化
for i := 0; i < m; i++ {
arr[i] = make([]int, n)
}
/**
* 第2步的另一种写法
* for i:= range arr {
* arr[i] = make([]int, n)
* }
*/
fmt.Println(arr) // [[0, 0, 0], [0, 0, 0]]
}