package main import "fmt" func f() { i := 0 defer fmt.Printf("i is %d", i) i = 100 } func main() { f() } package main import "fmt" func f() (ret int) { defer func(n int) { fmt.Println(n) fmt.Println(ret) }(ret) // retはゼロ値で初期化されている return 100 } func main() { fmt.Println(f()) }