Golang有多个defer的情况

时间:2025-03-04 08:45:31
有多个defer时,return后先运行最后定义的defer,后进先出,栈的运行顺序


package main
 
import "fmt"
import "log"


func main(){
defer func() {
("-------")
}()
defer func() {
if err := recover(); nil != err {
("=======")
}
}()
foo()
defer func() {
("++++++++")
}()
}
 
func foo(){
("111")
("A")
("222")
}
output:
111
2017/05/04 16:18:53 A
=======
-------
recover()的结果只能被调用一次