github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/prepare/20_trap/day01/main.go (about) 1 package main 2 3 // 下面这段代码输出的内容 4 5 import ( 6 "fmt" 7 ) 8 9 func main() { 10 deferCall() 11 } 12 13 func deferCall() { 14 defer func() { fmt.Println("打印前") }() 15 defer func() { fmt.Println("打印中") }() 16 defer func() { fmt.Println("打印后") }() 17 panic("触发异常") 18 } 19 20 // 参考解析:defer 的执行顺序是后进先出。当出现 panic 语句的时候,会先按照 defer 的后进先出的顺序执行,最后才会执行panic