下面这段代码输出的内容

package main

import (
    "fmt"
)
 
func defer_function() {
    defer func() { fmt.Println("1") }()
    defer func() { fmt.Println("2") }()
    defer func() { fmt.Println("3") }()
    panic("exception")
}

func main() {
    defer_function()
}

答案:

  3
  2
  1
  panic: exception

解析:

defer函数的执行顺序是先进后出,和栈一样,当出现panic的时候,就会按照先进后出的顺序执行defer函数,最后才执行panic。合理利用defer函数可以避免程序异常退出,保证程序的健壮性。