Go 我不理解返回函数的结果
我有以下初始代码:Go 我不理解返回函数的结果,go,Go,我有以下初始代码: package main func test(x int) (func(), func()) { return func() { println(x) x += 10 }, func() { println(x) } } func main() { a, b := test(100) a() b() } 输出是 100 110 如果
package main
func test(x int) (func(), func()) {
return func() {
println(x)
x += 10
}, func() {
println(x)
}
}
func main() {
a, b := test(100)
a()
b()
}
输出是
100
110
如果我编辑代码如下
package main
func test(x int) (func(), func()) {
return func() {
println(x)
}, func() {
println(x)
x += 10
}
}
func main() {
a, b := test(100)
a()
b()
}
结果是
100
100
我希望最后的结果是这样的,但事实并非如此,为什么
110
100
因为a是一个打印x的函数,b是一个打印x并加上10的函数。如果先调用a,然后调用b,它将打印100次,然后再向其中添加10,但永远不会打印。先调用b,然后调用a,它将打印您想要的内容。您希望看到一个即将发生但尚未发生的变量的更新吗?我认为go还不支持时间旅行: