为了账号安全,请及时绑定邮箱和手机立即绑定

在 Go 中迭代多维数组

在 Go 中迭代多维数组

Go
哔哔one 2021-08-23 16:28:13
在下面的代码示例中var a [3][5]int8for _, h := range a {    for _, cell := range h {        fmt.Print(cell, " ")    }    fmt.Println()}是a在每次迭代中制作的一行的副本吗?即,是否h包含一行的副本a或是否h获得对它的引用?
查看完整描述

1 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

一个副本。例如,


package main


import "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”语句遍历数组、切片、字符串或映射的所有条目,或通道上接收到的值。对于每个条目,它将迭代值分配给相应的迭代变量,然后执行该块。


迭代值被分配给相应的迭代变量,就像在赋值语句中一样。


查看完整回答
反对 回复 2021-08-23
  • 1 回答
  • 0 关注
  • 176 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信