深入defer
defer someFunction()func logExit(name string) {
fmt.Printf("Function %s returned\n", name)
}
func main() {
fmt.Println("First main statement")
defer logExit("main") // defer语句的位置无关紧要
fmt.Println("Last main statement")
}func logNum(i int) {
fmt.Printf("Num %d\n", i)
}
func main() {
defer logNum(1)
fmt.Println("First main statement")
defer logNum(2)
defer logNum(3)
panic("panic occurred")
fmt.Println("Last main statement") // 不会被打印
// 下面不会执行,因为执行流程永远不会到达此行
defer logNum(4)
}First main statement
Num 3
Num 2
Num 1
panic: panic occurred
goroutine 1 [running]:
main.main()
/tmp/src963563549/main.go:17 +0x152
exit status 2最后更新于