我有这段代码:
fmt.Scanf("%dx%d", &sizex, &sizey)
var grid [sizex][sizey]int
我目前正在获得"非常数数组绑定sizex"错误。如何创建具有用户选择的尺寸的数组?当然,我不想稍后修改它的大小,但我显然不能使用常量。
答案 0 :(得分:0)
我认为你正在寻找;
grid := make([][]int, sizex)
for i := 0; i < len(grid) i++ {
grid[i] = make([]int, sizey)
}
这有点像在C ++中使用new
关键字常规&#34;在堆栈上#34;分配。要在您的问题中使用声明,大小args必须是编译时已知的值。
在上面的示例中,make
仅适用于第一个维度,为我提供了一个[]int
数组的数组,但是,这些数组都没有被初始化,因此我必须迭代网格并调用make使用sizey
获取第二个维度。