我一直盯着这段代码,无法弄清楚其行为的原因。
package main
import (
"fmt"
)
var i int
func example() int {
defer func() {
fmt.Println("defer")
i = 1
}()
fmt.Println("first")
return i
}
func main() {
fmt.Println(example())
fmt.Println(i)
}
起初,我的预期输出是:
first
defer
1
1
但是,正如您在操场上看到的那样,实际输出是:
first
defer
0
1
它是延迟的匿名函数行为吗?没有
那么,为什么要打印0?
胡说叔叔
相关分类