Go 初体验 - 令人惊叹的语法 - defer.3 - defer 函数参数计算时机

时间:2023-03-09 15:19:22
Go 初体验 - 令人惊叹的语法 - defer.3 - defer 函数参数计算时机

defer 函数的参数计算时机

定义一个 defer 函数,接收参数 n:

Go 初体验 - 令人惊叹的语法 - defer.3 - defer 函数参数计算时机

调用:

Go 初体验 - 令人惊叹的语法 - defer.3 - defer 函数参数计算时机

输出:

Go 初体验 - 令人惊叹的语法 - defer.3 - defer 函数参数计算时机

有点惊讶,为什么不是 100 200 200?

go 语言里,defer 函数的参数是在定义位置被计算的,也就是说 defer 函数在哪,它的参数值就是那时的结果,不管后面还有什么算法,defer 函数的参数值都不会再改变,或许这是一种缓存吧。