go defer(go延迟函数)介绍


当前第2页 返回上一页

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

func main() {

    func1 := func(){

        fmt.Println("func1() execution deferred")

    }

    func2 := func(){

        fmt.Println("func2() execution deferred")

    }

    defer func1()

    defer func2()

    fmt.Println("strat\nworking...")

}

/*

OUTPUT:

strat

working...

func2() execution deferred

func1() execution deferred

*/

以上就是go defer(go延迟函数)介绍的详细内容,更多文章请关注木庄网络博客!!

返回前面的内容

相关阅读 >>

Golang 原子操作

Go语言 if 语句嵌套

Go语言proto使用入门

国内下载 Go get Golang.org/x 包失败的解决办法

最新消息!Go 1.17 正式发布啦!

Gox语言中的全局变量与局部变量-gx52

Go语言学习4-数组类型

手撸Golang 架构设计原则 里氏替换原则

Go中使用正则表达式

linux下怎么安装Go语言环境

更多相关阅读请进入《Go》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...