# defer 用法

URL: https://caijiao.org/go/01-go-basic/17-defer
Source: docs/go/01-go-basic/17-defer.md
Description: 本节介绍 Go 语言中的 defer 关键字，用于延迟函数执行，常用于资源释放和异常处理。

`defer` 关键字用于延迟函数的执行，直到包含它的函数即将返回时才执行。

## 1. 基本用法

```go
func main() {
    defer fmt.Println("world")
    fmt.Println("hello")
}
````

输出：

```
hello
world
```

## 2. 多个 defer

多个 defer 按照后进先出（LIFO）顺序执行：

```go
func main() {
    defer fmt.Println("first")
    defer fmt.Println("second")
    defer fmt.Println("third")
}
```

执行顺序：

```
third
second
first
```

## 3. 应用场景

* 关闭文件、释放锁等资源：

```go
file, _ := os.Open("test.txt")
defer file.Close()
```

* 保证函数退出前执行清理操作。

---

defer 简化了资源管理，确保关键操作不会被遗漏。
