根据闭包的特性,实际上在闭包函数存的是 age 这个变量的指针(原因可以查看上一篇文章:[Go 语言面试题 100 讲之 014篇:说说 Go 中闭包的底层原理?](https://iswbm.com/534.html)),因而,在 defer 后所修改的值会直接影响到 defer 中的 age 的值。
总结一下:
1. 若 defer 后接的是单行表达式,那defer 中的 age 只是拷贝了 `func1` 函数栈中 defer 之前的 age 的值;
2. 若 defer 后接的是闭包函数,那defer 中的 age 只是存储的是 `func1` 函数栈中 age 的指针。