defer后面的函数值和参数会被求值但是实际函数调用却要等到最后
这里函数值就是trace()返回的匿名函数,函数参数当然就是字符串字面值"foo()", 对trace("foo()")的求值会输出function foo() enter, 实际函数调用trace("foo()")()即输出function foo() exit(elapsed x.x)会推迟到return执行(如果return会更新返回值变量,则会在更新后才执行defer的函数)。
杂项
多说一点,如果存在多个defer语句,最后的defer的函数的执行顺序与defer出现的顺序相反,如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
以上就是go defer(go延迟函数)介绍的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
国内下载 Go get Golang.org/x 包失败的解决办法
更多相关阅读请进入《Go》频道 >>

Go语言101
一个与时俱进的Go编程知识库。