具有用户输入大小的数组

时间:2015-07-20 19:53:01

标签: arrays input go

我有这段代码:

fmt.Scanf("%dx%d", &sizex, &sizey)  
var grid [sizex][sizey]int

我目前正在获得"非常数数组绑定sizex"错误。如何创建具有用户选择的尺寸的数组?当然,我不想稍后修改它的大小,但我显然不能使用常量。

1 个答案:

答案 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获取第二个维度。