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数组。我试图将数组设置为每一列并遍历该列。
答案 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 )