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