猿问

在 Go 中迭代多维数组

在下面的代码示例中


var a [3][5]int8

for _, h := range a {

    for _, cell := range h {

        fmt.Print(cell, " ")

    }

    fmt.Println()

}

是a在每次迭代中制作的一行的副本吗?即,是否h包含一行的副本a或是否h获得对它的引用?


哔哔one
浏览 177回答 1
1回答

largeQ

一个副本。例如,package mainimport "fmt"func main() {    var a [3][5]int8    fmt.Println(a)    for _, h := range a {        h = [5]int8{1, 2, 3, 4, 5}        for _, cell := range h {            fmt.Print(cell, " ")        }        fmt.Println()    }    fmt.Println(a)}输出:[[0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0]]1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 [[0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0]]带有“range”子句的“for”语句遍历数组、切片、字符串或映射的所有条目,或通道上接收到的值。对于每个条目,它将迭代值分配给相应的迭代变量,然后执行该块。迭代值被分配给相应的迭代变量,就像在赋值语句中一样。
随时随地看视频慕课网APP

相关分类

Go
我要回答