Appearance
延时调用
- 在函数return之前执行。
定义
格式 :defer 其他操作
go
// 延时调用
// 像洋葱那样,从里层执行到外出defer
// defer 定义时 参数会先计算好,等待执行
func main() {
a1 := 1
b1 := 2
defer func(a int, b int) {
fmt.Println("defer1", a, b)
}(a1, b1)
a1 = 2
b1 = 3
defer func(a int, b int) {
fmt.Println("defer2", a, b)
}(a1, b1)
a1 = 2
b1 = 3
sumAB := func(a, b int) int {
return a + b
}
defer func(a, b int) {
fmt.Println("defer3", a, b)
}(a1, sumAB(a1, b1))
fmt.Println("我在最开始执行")
}用途
- 关闭文件
- 关闭链接
- 解锁
- 资源释放
