go语言defer关键字的用法

在 Go 中,defer 语句会推迟函数(包括任何参数)的运行,直到包含 defer 语句的函数完成。 通常情况下,当你想要避免忘记任务(例如关闭文件或运行清理进程)时,可以推迟某个函数的运行。

可以根据需要推迟任意多个函数。 defer 语句按逆序运行,先运行最后一个,最后运行第一个。

通过运行以下示例代码来查看此模式的工作原理:

package main

import "fmt"

func main()  {
    for i:= 0; i < 5; i++ {
        defer fmt.Println("defer: ", i)
    }
}

下面是代码输出:

defer:  4
defer:  3
defer:  2
defer:  1
defer:  0

运行上述代码会倒序执行传入 defer 关键字的所有表达式,因为最后一次调用 defer 时传入了 fmt.Println(4),所以这段代码会优先打印 4。

defer 传入的函数不是在退出代码块的作用域时执行的,它只会在当前函数和方法返回之前被调用。

posted @ 2021-11-13 14:41  烟花不太冷  阅读(121)  评论(0编辑  收藏  举报