package main
import "fmt"
func main() {
row, col := 4, 5
// 将 matrix 定义为一个二维切片
// 行列都未初始化
var matrix1 [][]int
for i := 0; i < row; i++ {
// 初始化一个长度为 col 的切片作为 matrix 的每行
rowVector := make([]int, col)
// 由于 matrix 只是被定义成了一个二维切片,行列未初始化
// 因此这里只能 append
matrix1 = append(matrix1, rowVector)
// 如果按照下面这样直接赋值,会 panic,索引越界
//matrix1[i] = rowVector
}
// 将 matrix 初始化为一个二维切片
// 并且行数为 row ,但是每行的长度并未定义
matrix2 := make([][]int, row)
// 遍历 matrix 的每行
for i := range matrix2 {
// 定义并初始化一个切片,作为 matrix 的每行
// 这里由于初始化了 matrix 的行数为 row,因此可以直接赋值
matrix2[i] = make([]int, col)
}
fmt.Println(matrix1)
fmt.Println(matrix2)
}