arrays - 这个使用范围的简单 For 循环如何以及为什么在 Go 中打印一个简单的 3D 数组?

标签 arrays go multidimensional-array

我尝试以这种方式使用 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/

相关文章:

java - 专门从一系列类(class)写入 csv 文件

php - 如何根据表头和第一行值的组合在表格单元格中放置值?

variables - golang 编译器说程序正在重新定义变量,还没有重新定义

go - 如何设置 go-swagger 以从注释生成规范

JAVA 将二维数组的对角线写入一维数组

php - MySql PHP 选择 JSON 值

c# - 使用 x509.ParseCertificateRequest 解码失败但 openssl 可以吗?

c++ - 如何将 malloc 返回的指针视为多维数组?

c - 如何使用 Objective-C 对象的二维 C 数组?

python - Numpy 数组切片与 for 循环结果