go defer

作者: 夜空一起砍猩猩 | 来源:发表于2018-01-31 23:55 被阅读0次

函数体执行结束后,按照调用顺序的反向,逐个执行

即时函数发生严重错误也会执行

支持匿名函数的调用

常用于自愿清理、文件关闭、解锁以及记录时间等操作

通过与匿名函数配合可在return之后修改函数计算结果

如果函数体内某个变量作为defer时匿名函数的参数,则在定义defer时即已经获得了拷贝,否则则是引用某个变量的地址

go没有异常机制,但有panic/recover模式处理错误

panic可以在任何地方引发,但recover只有在defer调用的函数中有效


func main() {

    fmt.Println("111")

    defer fmt.Println("222")

    defer fmt.Println("333")

}

输出:

111

333

222

func main() {

    defer func() { //必须要先声明defer,否则不能捕获到panic异常

        fmt.Println("c")

        if err := recover(); err != nil {

            fmt.Println(err) //这里的err其实就是panic传入的内容

        }

        fmt.Println("d")

    }()

    f()

}

func f() {

    fmt.Println("a")

    panic(111111111)

    fmt.Println("b")

}

输出:

a

c

111111111

d

相关文章

  • golang defer 特性

    defer.go

  • Go Defer

    Go Defer 如果函数里面有多条defer指令,他们的执行顺序是反序,即后定义的defer先执行。 defer...

  • Go教程第二十七篇:Defer

    Defer 本文是《Go系列教程》的第二十二篇文章。 什么是Defer? defer/dɪˈfɜː(r)/ 意为:...

  • goLang异常处理

    defer defer是go提供的一种资源处理的方式。defer的用法遵循3个原则在defer表达式被运算的同时,...

  • Go language quick framework

    hello world structure syntax case defer go...

  • 异常

    1、error接口 2、defer 你可以在Go函数中添加多个defer语句,当函数执行到最后时,这些defer语...

  • go defer

    函数体执行结束后,按照调用顺序的反向,逐个执行 即时函数发生严重错误也会执行 支持匿名函数的调用 常用于自愿清理、...

  • defer go

    Go语言的 defer 语句会将其后面跟随的语句进行延迟处理,在 defer 归属的函数即将返回时,将延迟处理的语...

  • Go defer

    Outputs:

  • go/defer

    defer使用 defer是Go语言提供的一种用于注册延迟调用的机制:让函数或语句可以在当前函数执行完毕后(包括通...

网友评论

      本文标题:go defer

      本文链接:https://www.haomeiwen.com/subject/ewjrzxtx.html