<分区>
我在 Go 中使用 for range
循环来遍历一片结构。
在每个循环中,我将指向当前项目的指针指向一个变量。
我很困惑为什么指针会在下一个循环中改变值。
例如this code :
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}
作为引用,在我的实际代码中,我在循环期间检查条件,并返回当前项目和前一个项目。所以我试图保存一个指向它的指针,以便在下一次迭代中它也可以访问前一次。