多维数组是固定长度的,声明时需指定每维大小,如var matrix 2int,通过嵌套循环初始化和访问元素;而多维切片更灵活,长度可变,使用make创建,如make([][]int, rows),需逐层初始化。

在Golang中,多维数组和多维切片常用于处理矩阵、表格或嵌套数据结构。虽然它们的使用方式相似,但在底层结构和灵活性上有明显区别。
多维数组的声明与使用
多维数组是固定长度的,声明时需要指定每一维的大小。
例如,声明一个2×3的整型二维数组:
var matrix [2][3]int你可以通过嵌套循环初始化和访问元素:
立即学习“go语言免费学习笔记(深入)”;
for i := 0; i for j := 0; j matrix[i][j] = i * 3 + j}
}
多维数组是值类型,赋值或传参时会复制整个数组,适用于小规模、固定尺寸的数据。
多维切片的声明与使用
多维切片更灵活,长度可变,适合动态场景。
声明一个二维切片:
var grid [][]int使用前必须初始化每一层:
grid = make([][]int, 3) // 创建3行for i := range grid {
grid[i] = make([]int, 4) // 每行4列
}
也可以直接用字面量初始化:
grid := [][]int{{1, 2, 3},
{4, 5, 6},
}
切片是引用类型,操作更高效,适合处理不确定大小的数据。
常见操作与注意事项
多维结构的操作需注意边界和初始化。
- 访问元素时确保索引不越界
- 对切片追加行:grid = append(grid, []int{7, 8, 9})
- 可以创建不规则的“锯齿”切片,每行长度不同
- 遍历时可用 range 简化代码
例如遍历二维切片:
for _, row := range grid {for _, val := range row {
fmt.Print(val, " ")
}
fmt.Println()
}
基本上就这些。数组适合固定结构,切片更灵活。根据实际需求选择即可。










