func deferReturn (){
i:=1
j:=func(n *int)int{
defer func() {
*n=*n+1
}()
return *n
}(&i)
println("i",i)
println("j",j)
}
执行结果
=== RUN Test_deferReturn
i 2
j 1
执行顺序
1、defer压栈
2、返回值到内存区
3、赋值给j
4、执行defer
所以j还是1
i变成了2
所以结论是会限制性return 再执行defer