package main
import (
"fmt"
"errors"
)
func main() {
fmt.Println("---- main start ----")
var err error
defer func() {
fmt.Println("---- main defer start ----")
if err != nil {
fmt.Println("--> err in main defer")
fmt.Println(err)
}
fmt.Println("---- main defer end ----")
}()
anonymous := func() (err error) {
defer func() {
fmt.Println("---- anonymous defer start ----")
if err != nil {
fmt.Println(err)
}
fmt.Println("---- anonymous defer end ----")
}()
fmt.Println("---- anonymous start ----")
err = errors.New("anonymous error occured")
return
}
err = noname()
fmt.Println("---- main end ----")
}
---- main start ----
---- anonymous start ----
---- anonymous defer start ----
anonymous error occured
---- anonymous defer end ----
---- main end ----
---- main defer start ----
--> err in main defer
anonymous error occured
---- main defer end ----