defer 用法

defer 关键字用于延迟函数的执行,直到包含它的函数即将返回时才执行。

1. 基本用法

func main() {
    defer fmt.Println("world")
    fmt.Println("hello")
}

`

输出:

hello
world

2. 多个 defer

多个 defer 按照后进先出(LIFO)顺序执行:

func main() {
    defer fmt.Println("first")
    defer fmt.Println("second")
    defer fmt.Println("third")
}

执行顺序:

third
second
first

3. 应用场景

  • 关闭文件、释放锁等资源:
file, _ := os.Open("test.txt")
defer file.Close()
  • 保证函数退出前执行清理操作。

defer 简化了资源管理,确保关键操作不会被遗漏。