如何使用for循环遍历2D数组

时间:2020-05-06 01:00:15

标签: arrays go

package main

import (
    "fmt"
)

func main() {
    grid := [][]int{
        {0, 1, 2, 3},
        {4, 5, 6, 7},
    }
    for _, array := range grid[0] {
        for j := range array {
            fmt.Print(array[j], " ")
        }
        fmt.Println()

    }
}

这是我现在拥有的内容,我试图遍历每一列,但出现编译错误以下

./prog.go:13:12: cannot range over array (type int)

grid是[] [] int数组。我试图将数组设置为每一列并遍历该列。

PlayGround

2 个答案:

答案 0 :(得分:1)

似乎您的内部range中缺少一个变量名。

来自https://tour.golang.org/moretypes/16

在切片上范围内时,每次迭代都会返回两个值。第一个是索引,第二个是该索引处的元素的副本。

下面的代码已修复(在https://play.golang.org/p/6uaM2IEm9lR上可运行的示例)

package main

import (
    "fmt"
)

func main() {
    grid := [][]int{
        {0, 1, 2, 3},
        {4, 5, 6, 7},
    }
    for _, col := range grid {
        for _, value := range col {
            fmt.Println(value)
        }
    }
}

答案 1 :(得分:1)

您的范围循环非常好,唯一的问题是,如果您对2D数组使用两个循环,那么为什么需要使用 grid [0] 在外部循环中,只需使用 grid 即可

您更新后的工作代码

%matplotlib inline

可运行的示例-https://play.golang.org/p/NIkhFOqyF6g

出现错误是因为当您将 grid [0] 传递到外部循环时,它将在内部循环中传递一个整数值,并且将给出错误不能在数组范围内变化(类型为int )