延迟函数调用(defer)
Go语言中延迟函数defer充当着 cry...catch 的重任,使用起来也非常简便,然而在实际应用中,很多人并没有真正搞明白defer、return和返回值之间的执行顺序,从而掉进坑中,今天我们就来揭开它的神秘面纱!
- 1
- 2
先来运行下面两段代码:
A. 无名返回值的情况
package main
import (
"fmt"
)
func main() {
fmt.Println("return:", a()) // 打印结果为 return: 0
}
func a() int {
var i int
defer func() {
i++
fmt.Println("defer2:", i) // 打印结果为 defer: 2
}()