Golang——defer

1.defer用于资源的释放
用于在作用域结束之后执行函数的关键字,在当前函数或者方法返回之前调用一些用于收尾的函数,例如关闭文件描述符、关闭数据库连接以及解锁资源。
2. leetcode:79
https://tiancaiamao.gitbooks.io/go-internals/content/zh/03.4.html
规则:
给函数返回值赋值
调用defer函数
空的return

func f() (result int) {
    defer func() {
        result++
    }()
    return 0
}

func f() (result int) {
     result = 0  
     func() { //defer被插入到return之前执行,也就是赋返回值和ret指令之间
         result++
     }()
     return
}
结果是1
func f() (r int) {
     t := 5
     defer func() {
       t = t + 5
     }()
     return t
}

func f() (r int) {
     t := 5
     r = t  //给返回值赋值
     func() {//defer被插入到赋值与返回之间执行,此例子返回值r没被修改过
         t = t + 5
     }
     return        //空的return指令
}
结果是5
func f() (r int) {
    defer func(r int) {
          r = r + 5
    }(r)
    return 1
}

func f() (r int) {
     r = 1  //给返回值赋值
     func(r int) {//这里改的r是传值传进去的r,不会改变要返回的那个r值
          r = r + 5
     }(r)
     return        //空的return
}
结果是1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值