猿问

如何使用 for 循环遍历二维数组

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)

网格是 [][]int 数组。我正在尝试为每一列设置数组并遍历该列。


鸿蒙传说
浏览 136回答 2
2回答

www说

您的范围循环非常好,唯一的问题是,如果您对二维数组使用两个循环,那么为什么需要在外循环中使用grid[0] ,只需使用grid就可以了您更新的工作代码package mainimport (    "fmt")func main() {    grid := [][]int{        {0, 1, 2, 3},        {4, 5, 6, 7},    }    for _, array := range grid {        for j := range array {            fmt.Print(array[j], " ")        }        fmt.Println()    }}可运行示例 - https://play.golang.org/p/NIkhFOqyF6g它给出了错误,因为当您将grid[0]传递给外循环时,它会在内部循环中传递一个整数值,并且它会给出错误cannot range over array (type int)

九州编程

您的 inner 似乎缺少一个变量名range。来自https://tour.golang.org/moretypes/16:在切片上进行测距时,每次迭代都会返回两个值。第一个是索引,第二个是该索引处元素的副本。下面的代码有修复(https://play.golang.org/p/6uaM2IEm9lR上的可运行示例)package mainimport (    "fmt")func main() {    grid := [][]int{        {0, 1, 2, 3},        {4, 5, 6, 7},    }    for _, col := range grid {        for _, value := range col {            fmt.Println(value)        }    }}
随时随地看视频慕课网APP

相关分类

Go
我要回答