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还不支持时间旅行: