在下面的代码示例中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”语句遍历数组、切片、字符串或映射的所有条目,或通道上接收到的值。对于每个条目,它将迭代值分配给相应的迭代变量,然后执行该块。
迭代值被分配给相应的迭代变量,就像在赋值语句中一样。
- 1 回答
- 0 关注
- 176 浏览
添加回答
举报
0/150
提交
取消