//当执行到defer时,展示不执行,会将defer后面的语句压入到独立的栈(defer栈) //当函数执行完毕,再成defer栈,按照先入后出的方式出栈,执行
package main import "fmt" func sum(n1, n2 int) int { //当执行到defer时,展示不执行,会将defer后面的语句压入到独立的栈(defer栈) //当函数执行完毕,再成defer栈,按照先入后出的方式出栈,执行 defer fmt.Println("ok1 n1=", n1) defer fmt.Println("ok2 n2=", n2) res := n1 + n2 fmt.Println("ok3 res=", res) return res } func main() { res := sum(10, 20) fmt.Println("res=", res) }
执行结果:
ok3 res= 30
ok2 n2= 20
ok1 n1= 10
res= 30