Go Defer

作者: 五岁小孩 | 来源:发表于2021-02-27 14:41 被阅读0次

Go Defer

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

  • defer函数的参数在defer语句出现的位置计算,不是在defer函数运行的时刻计算。

    package main
    
    import "log"
    
    func foo(n int) int {
        log.Println("n1=", n)
        defer log.Println("n=", n)
        n += 100
        log.Println("n2=", n)
        return n
    }
    
    func main() {
        var i int = 100
        foo(i)
    }
    
    其运行结果是:
    2017/09/30 19:25:10 n1=100
    2017/09/30 19:25:10 n2= 200
    2017/09/30 19:25:10 n= 100
    
    • 修改

      package main
      
      import "log"
      import _ "time"
      
      func foo(n int) int {
          log.Println("n1=", n)
          defer func() {
              n += 100
              log.Println("n=", n)
          }()
          n += 100
          log.Println("n2=", n)
          return n
      }
      
      func main() {
          var i int = 100
          foo(i)
      }
      
      其运行结果是:
      2017/09/30 19:30:58 n1= 100
      2017/09/30 19:30:58 n2= 200
      2017/09/30 19:30:58 n= 300
      

相关文章

  • 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/zpmonktx.html