我尝试以这种方式使用 range 函数来打印电路板并且它确实有效,但我无法解决为什么?行数、列数如何计算?
package main
import "fmt"
func main() {
var board [2][2][2]string
for row := range board {
for column := range board {
for third := range board {
fmt.Print(row, column, third)
fmt.Println()
}
}
}
}
最佳答案
您的代码并没有按照您的想法行事。您在每个循环中迭代顶级数组。每个数组恰好有 2 个元素这一事实给了你成功的错觉。如果您打印出值而不是索引 ( playground ),则失败会更加明显:
var board = [2][2][2]string{
{
{"a", "b"},
{"c", "d"},
},
{
{"e", "f"},
{"g", "h"},
},
}
for _, rowValue := range board {
for _, columnValue := range board {
for _, thirdValue := range board {
fmt.Println(rowValue, columnValue, thirdValue)
fmt.Println()
}
}
}
你想要的是让每个内部循环遍历内部数组(playground link):
for _, rowValue := range board {
for _, columnValue := range rowValue {
for _, thirdValue := range columnValue {
fmt.Printf("\t%s", thirdValue)
}
fmt.Printf("\n")
}
fmt.Printf("\n\n")
}
给出了这个输出:
a b
c d
e f
g h
关于arrays - 这个使用范围的简单 For 循环如何以及为什么在 Go 中打印一个简单的 3D 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55260106/