func test_1(){
exit:=make(chan struct{})
go func() {
defer close(exit)
defer println("exit")
func(){
defer func() {
println("b:",recover()==nil,recover())
}()
func (){
println("c")
//runtime.Goexit()
panic("panic done")
println("c done")
}()
println("b done")
}()
println("a done")
}()
<-exit
}
调用panic后会结束后续的流程,defer可以继续执行,但是println("a done")还是输出了了结果,照理来说panic调用后这部分应该也不能输出的为啥能输出“a done”?
a done在外面的