func logExit(name string) {
fmt.Printf("Function %s returned\n", name)
}
func main() {
fmt.Println("First main statement")
defer logExit("main") // defer语句的位置无关紧要
fmt.Println("Last main statement")
}
package main
import (
"fmt"
)
func logNum(i int) {
fmt.Printf("Num %d\n", i)
}
func main() {
i := 1
defer logNum(i) // deferred function call: logNum(1)
fmt.Println("First main statement")
i++ //i=2
defer logNum(i) // deferred function call: logNum(2)
i++ // i = 3
defer logNum(i * i) // deferred function call: logNum(9)
}
---------Output---------
First main statement
Num 9
Num 2
Num 1
func plusOne(i int) (result int) {
// 匿名函数之后必须加 () 进行调用
defer func() { result++ }()
// i 作为结果被返回, 它会被上面的延迟调用函数修改
return i
}
func main() {
fmt.Println(plusOne(1)) // 2
}