func matrix(n int) {
var result [n][n]int //Does not work
fmt.Println(result)
}
如何根据传递给数组的长度创建2D数组; n是数组的长度。
答案 0 :(得分:1)
您必须分别分配其他尺寸,例如:
func matrix(n int) {
var result = make([][]int, n)
for i := range result {
result[i] = make([]int, n)
}
fmt.Println(result)
}
使用在编译时已知的具有固定维数的实际数组,您可以执行以下操作:
var result [5][5]int
但事实并非如此。
答案 1 :(得分:1)
The Go Programming Language Specification
数组是单个类型的编号元素序列,称为 元素类型。元素的数量称为长度,且为 永远不会消极。
ArrayType = "[" ArrayLength "]" ElementType . ArrayLength = Expression . ElementType = Type .
长度是数组类型的一部分;它必须评估为 可通过类型int的值表示的非负常数。长度 可以使用内置函数len查找数组a的数组。的 元素可以通过整数索引0到len(a)-1进行寻址。数组 类型始终是一维的,但可以组成形式 多维类型。
长度是数组类型的一部分;它必须评估为 可通过int类型的值表示的非负常量。
数组的大小在编译时是固定的。
使用切片。
例如,
package main
import "fmt"
func matrix(n int) [][]int {
m := make([][]int, n)
for i := range m {
m[i] = make([]int, n)
}
return m
}
func main() {
fmt.Println(matrix(3))
}
游乐场:https://play.golang.org/p/D1MHmm5KCht
输出:
[[0 0 0] [0 0 0] [0 0 0]]