defer 函数的参数计算时机
定义一个 defer 函数,接收参数 n:
调用:
输出:
有点惊讶,为什么不是 100 200 200?
go 语言里,defer 函数的参数是在定义位置被计算的,也就是说 defer 函数在哪,它的参数值就是那时的结果,不管后面还有什么算法,defer 函数的参数值都不会再改变,或许这是一种缓存吧。