多个defer
在一个函数内定义多个defer
,则其遵循类似 后进先出 的原则,最后定义的defer最先执行
defer在return之前执行
package main
import "fmt"
func main() {
fmt.Println("return:", test())
}
func test() int {
var i int
defer func() {
i++
fmt.Println("defer1", i)
}()
defer func() {
i++
fmt.Println("defer2", i)
}()
return i
}
输出结果为:
defer2 1
defer1 2
return: 0