看这段 golang 片段:
package main
import "fmt"
func main() {
x := 1
defer func(a int) {
fmt.Println("a =", a)
}(x)
defer func() {
fmt.Println("x =", x)
}()
x++
}
运行结果:
x = 2
a = 1
这里 a = 1 不太理解,传值的时候这里 x 为什么不是自增后的 2 呢?
因为你第一个
是传参数的 x,运行到这里的时候,x = 1。所以打印结果 a = 1