deferについて知らない事があったので書き留めておきます。
以下を見て知りました。
darshanime/notes
例
package main
import "fmt"
func trace(s string) string {
fmt.Println("entering: ", s)
return s
}
func un(s string) {
fmt.Println("leaving: ", s)
}
func a() {
defer un(trace("a"))
fmt.Println("in a")
}
func b() {
defer un(trace("b"))
fmt.Println("in b")
a()
}
func main() {
b()
}
結果
C:\Windows\system32\cmd.exe /c ( go run main.go)
entering: b
in b
entering: a
in a
leaving: a
leaving: b