下面这段代码输出的内容
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函数可以避免程序异常退出,保证程序的健壮性。