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延迟函数)介绍的详细内容,更多文章请关注木庄网络博客!!

返回前面的内容

相关阅读 >>

Go 字符串常用的系统函数

什么是量化交易|量化交易平台

手撸Golang etcd raft协议之5

grpc-quick start

手撸Golang 行为型设计模式 备忘录模式

Go语言开发环境搭建

手撸Golang 结构型设计模式 适配器模式

总结 Go 的数据类型

Golang 能不能打包为 dll ?

02 - 【Go语言学习笔记】变量和常量

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




打赏

取消

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

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

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

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

评论

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