我for range在 Go 中使用循环来遍历一段结构。
在每个循环中,我是一个指向当前项目的指针,指向一个变量。
我很困惑为什么指针会在下一个循环中更改值。
例如这个代码:
package main
import "fmt"
type t struct {
val int
}
func main() {
l := []t{{1}, {2}}
var p *t
for _, i := range l {
fmt.Println("begin", p)
p = &i
fmt.Println("end", p)
}
}
我希望产生:
begin <nil>
end &{1}
begin &{1}
end &{2}
但实际上是:
begin <nil>
end &{1}
begin &{2}
end &{2}
作为参考,在我的实际代码中,我在循环期间检查条件,并返回当前项和前一项。所以我试图保存一个指向它的指针,以便在下一次迭代中它也可以访问前一次。
慕丝7291255
幕布斯6054654
慕侠2389804
相关分类