The 2D Array I am trying to print as a board
注意:我是一个完全的新手在使用围棋和需要这个为最后的项目。
我正在尝试制作游戏,蛇和梯子。我需要打印一个10X10的2D阵列作为网格,这样它看起来更像一个棋盘。
我试过使用:
for row := 0; row < 10; row ++ 10{
} for column := 0; column < 10; column++{
fmt.Println()
}
但它失败了。
有什么函数或方法可以做到这一点吗?
2条答案
按热度按时间ddhy6vgd1#
就快到了,你应该把你想打印的变量传递给
fmt.Println
,还要记住这总是会在输出的末尾加一个换行符,你可以使用fmt.Print
函数打印变量。额外的提示,除了使用硬编码的大小,你还可以使用range来循环每个元素,这对任何大小的数组/切片都有效。
jq6vz3qz2#
基于范围的解决方案
范围使我们不必直接传递长度,因此可以使函数可重用于不同高度和宽度的2D数组(Go By Example range page)。
通用2D矩阵迭代器
使用范围循环遍历二维数组中的每个值可能类似于...
Run this code in Go playground here
下划线是什么意思
下划线在声明的变量不被使用的地方是必要的,否则(编译器?)将抛出错误,并且不会运行代码。
变量
r
和c
用于持续访问矩阵中的整数索引,从0开始向上计数,我们必须在r
之后传递下划线_
,因为该空格将使我们能够访问整个行对象,而在后面的代码中我们不会使用该对象。(是的,我们也可以定义range row
而不是range board[r]
,这样我们就可以使用row对象了。)如果我们后来没有在Printf语句中使用
c
,我们也必须在c
的位置传递一个_
。下面是一个更简单的版本(和Go Playground),没有索引访问:为什么是“colValue”而不是“col”?
在此模式中,使用了一些有说服力的名称(如“
colValue
“)而不是column
,这是因为在代码的内部点,我们已经深入到单个元素,而不是像使用board[r]
访问整个行那样深入到整个元素集在这里,我们根本不使用索引,因此必须使用
_
来编写索引。