package main import ( "errors" "fmt" ) func main() { test() fmt.Println("This line will not get printed") } func test() { n := func() { fmt.Println("Defer in test") } defer n() msg := "good-bye" message(msg) } func message(msg string) { f := func() { fmt.Println("Defer in message func") } defer f() if msg == "good-bye" { panic(errors.New("something went wrong")) } }