【Golang系列】-defer语句

2022-03-16

defer语句

defer语句会将其后面跟随的语句 进行延迟处理,在defer归属的函数即将返回时,将延迟处理的语句按defer定义的逆序进行执行,也就是说,先被defer的语句最后执行,最后被defer的语句,最先被执行。

特性:

  • 关键字defer用于注册延迟调用
  • 这些调用直到return前才被执行,因此,可以用来做资源清理
  • 多个defer按照先出后进的方式执行
  • defer中的变量,在defer声明时候就决定了

defer的用途:

  • 关闭文件句柄
  • 锁资源释放
  • 数据库链接释放
    示例:
package main

import "fmt"

func main() {
    fmt.Println("start...")
    defer fmt.Println("step1")
    defer fmt.Println("step2")
    defer fmt.Println("step3")
    fmt.Println("end...")
}

结果:

[Running] go run "/Users/lihui/Desktop/gocode/src/chapter07/demo03.go"
start...
end...
step3
step2
step1

[Done] exited with code=0 in 0.963 seconds