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
}
after calling panic, the subsequent process ends, and defer can continue to execute, but println ("a done") still outputs the result. In theory, why can you output "a done" if this part should not be output after panic call?