【GoLang基础】defer关键字有什么作用?

问题引出:

Go语言中的defer关键字有什么作用?

解答:

defer 是 Go 语言中的一个关键字,用于延迟(defer)函数的执行直到包含 defer 的函数执行完毕。defer 通常用于在函数执行完成后执行一些清理或收尾工作。它的作用包括以下几个方面:

  1. 延迟执行: 使用 defer 关键字可以延迟一个函数的执行直到包含 defer 的函数执行完毕。这意味着无论函数是正常返回还是发生了 panic,被 defer 延迟执行的函数都会在最后被执行。
  2. 清理资源: defer 常用于释放资源,例如关闭文件、关闭数据库连接、解锁资源等。通过在函数开头打开资源,在函数结尾使用 defer 来关闭资源,可以确保资源在函数执行完毕后被正确释放,避免资源泄露。
func processFile(filename string) error {
    f, err := os.Open(filename)
    if err != nil {
        return err
    }
    defer f.Close() // 确保文件在函数执行完毕后被关闭

    // 处理文件的逻辑

    return nil
}
  1. 函数调用顺序: 多个 defer 语句按照后进先出(LIFO)的顺序执行,即最后一个被延迟的函数会最先执行,依次类推。
func foo() {
    defer fmt.Println("first")
    defer fmt.Println("second")
    defer fmt.Println("third")
}

// 输出顺序为:third, second, first
  1. 参数值的延迟计算: defer 执行时,会立即对参数进行计算,但是函数调用被推迟到包含 defer 的函数执行结束时。这意味着参数的值在 defer 执行时已经确定。
func foo() {
    i := 0
    defer fmt.Println(i) // 输出 0,而不是延迟后的值
    i++
}

// 输出结果为 0

小结:

总之,defer 关键字是 Go 语言中用于延迟执行函数清理资源确保代码块结束时执行特定逻辑的有用工具。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值