golang defer执行顺序
defer函数的执行顺序是先进后出,和栈一样,return 最后执行,当出现panic的时候,就会按照先进后出的顺序执行defer函数,最后才执行panic,return 不再执行。合理利用defer函数可以避免程序异常退出,保证程序的健壮性。
func main() {
fmt.Println(ddd())
}
func ddd() string {
defer fmt.Println("999")
defer ccc()
return "ddd"
}
func ccc() string {
fmt.Println("ccc")
return ""
}
ccc 999 ddd

