Go学习笔记12-defer
  • 用途:含有defer语句的函数,会在该函数将要返回之前,调用另一个函数。
  • defer不仅限于函数的调用,调用方法也是合法的。
  • 并非在调用延迟函数的时候才确定实参,而是当执行defer语句的时候,就会对延迟函数的实参进行求值:
func printA(a int) {
    fmt.Println(a)
}

func main() {
    a := 5
    defer printA(a)
    a = 10
    fmt.Println(a)
    // output:
    /*
    10
    5
    */
}
  • 当一个函数内多次调用defer时,Go会把defer调用放入到一个栈中,随后按照后进先出的顺序执行。
  • 当一个函数应该在与当前代码流无关的环境下调用时,可以使用defer

reference:

https://studygolang.com/articles/12719