arrays - 大小来自用户输入的数组

标签 arrays input go

<分区>

我有这段代码:

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/

相关文章:

c++ - 如何在对象中初始化指针的静态数组

c++ - 无法将形状添加到数组 C++

concurrency - 为什么带有填充字段的结构工作得更快

javascript - Max/Min/Avg 按顺序返回数组

java - 无法从 ArrayList 生成随机顺序

Java 基本代码片段

javascript - 使用数据库中的数据将自动完成应用于动态生成的文本框

javascript - 如何创建 localStorage 方法

go - 运行 "go get github.com/libp2p/go-libp2p"导致错误消息

html - 如何转换HTML标签中的转义字符?