defer 栈

推迟的函数调用会被压入一个栈中。当外层函数返回时,被推迟的函数会按照后进先出的顺序调用。

更多关于 defer 语句的信息,请阅读此博文

defer-multi.go

  1. package main
  2. import "fmt"
  3. func main() {
  4. fmt.Println("counting")
  5. for i := 0; i < 10; i++ {
  6. defer fmt.Println(i)
  7. }
  8. fmt.Println("done")
  9. }