package main
import "fmt"
func test() int {
var i = 0
defer func() {
i++
fmt.Println("defer 1")
}()
defer func() {
i++
fmt.Println("defer 2")
}()
return i
}
func main() {
fmt.Println("return ", test())
}
defer 先进后出
执行顺序是:
defer2 defer1 return 0
思考为什么return最后输出?且i的值不变?