gpt4 book ai didi

pointers - 对golang for循环的迭代值有点迷惑

转载 作者:数据小太阳 更新时间:2023-10-29 03:31:36 26 4
gpt4 key购买 nike

这个问题与this有关和 this answer

除了一件小事,所有这些问题和答案对我来说都很有意义。

如果 for 循环的第二个值是 a[i],那么 for 循环的 a[i]a[i] 有什么不同> 当我们写的时候?看起来是一样的,但其实不是,对吧?

请帮我解决这个问题。谢谢大家!

最佳答案

当你写的时候:

a := make([]int, 3)

a[0], a[1], a[2] = 1, 2, 3

for i, val := range a {
println(a[i], "vs.", val)
println(&a[i], "vs.", &val)
}

变量 val 被分配了a[i] 中值的副本

基本上和这样做是一样的:

var val int
for i := range a {
val = a[i]
println(a[i], "vs.", val)
println(&a[i], "vs.", &val)
}

所以取决于你当时在做什么:

It looks like the same thing but it isn't, right?

如果用变量读取值,那么是一样的。

但是如果你给它赋值,取它的指针值等等,它不是

关于pointers - 对golang for循环的迭代值有点迷惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50690996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com