0

Go语言中执行defer

已有 188 阅读此文人 - - GO -
//当执行到defer时,展示不执行,会将defer后面的语句压入到独立的栈(defer栈)
//当函数执行完毕,再成defer栈,按照先入后出的方式出栈,执行

[php]
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)
}

[/php]

执行结果:
ok3 res= 30
ok2 n2= 20
ok1 n1= 10
res= 30

期待你一针见血的评论,Come on!

不用想啦,马上 "登录"  发表自已的想法.