我需要在输入中创建一个具有自定义长度的二维切片。切片是我的扫雷器的字段,所以长度将是字段的维度。我需要切片是全局的,现在我将切片直接初始化为字段的常量维度,但是我正在实现难度,所以我需要字段是可变的。
//my code right now
const dimX int = 16 //X field dimension
const dimY int = 16 //Y field dimension
var bombs int = 40 //number of mines
var number [dimX][dimY]int8 //number contained in the cell, 0 if empty, -1 if mine
var isOpen [dimX][dimY]bool //if the cell is visible to the user
var isFlagged [dimX][dimY]bool //if the cell is marked as a bomb
有没有一种方法可以声明变量,然后在函数中初始化它们,就像这样(这种方式在 go 中是不可能的):
//what i'd like to do
var dimX, dimY, bombs int
var number [][]int8
func main() {
Scan(&dimX, &dimY, &bombs)
number = [dimX][dimY]
...
}
我也尝试过使用make,但它给了我一个不兼容的分配(不能使用make([][]uint8,dimX)([][]uint8类型的值)作为[16][16]int8):
func main() {
Scan(&dimX, &dimY, &bombs)
number = make([][]uint8, dimX)
for i := range number {
number[i] = make([]uint8, dimY)
}
...
}
我发现唯一可行的方法是通过 append() 函数:将字段声明为 [][] 或 [0][0] 并在用户输入后运行一个函数 append() x 次和 y 次到切片
慕尼黑8549860
相关分类