<分区>
我有这段代码:
fmt.Scanf("%dx%d", &sizex, &sizey)
var grid [sizex][sizey]int
我目前收到“非常量数组绑定(bind) sizex”错误。如何创建具有用户选择的维度的数组?当然,后面我不想修改它的大小,但是我显然不能使用常量。
<分区>
我有这段代码:
fmt.Scanf("%dx%d", &sizex, &sizey)
var grid [sizex][sizey]int
我目前收到“非常量数组绑定(bind) sizex”错误。如何创建具有用户选择的维度的数组?当然,后面我不想修改它的大小,但是我显然不能使用常量。
最佳答案
我想你在找;
grid := make([][]int, sizex)
for i := 0; i < len(grid) i++ {
grid[i] = make([]int, sizey)
}
这有点像在 C++ 中使用 new
关键字来进行常规的“在堆栈上”分配。要在您的问题中使用声明,大小参数必须是编译时已知的值。
在上面的示例中,make
仅适用于第一个维度,给我一个 []int
数组的数组,但是,这些数组都没有被初始化,所以我必须遍历网格并使用 sizey
调用 make 以分配第二个维度。
关于arrays - 大小来自用户输入的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31525175/