函数返回值问题

jianshu527 · · 795 次点击
return操作不是原子操作 匿名和命名返回值在return时执行的流程是不同的 http://404-notfound.cn/golang-return-defer/
#2
更多评论
函数的返回过程是这样的:先个返回值赋值,然后调用defer表达式,最后才是返回到调用函数中. 而DeferFunc2中先给返回值赋值为t,这只是一次深拷贝而已,而后调用defer函数修改t的值,好像跟返回值无关。 而DeferFunc1中的返回值就是t这个变量,所以defer函数修改t的值,肯定就会对返回值有影响。
#1