Skip to content

延时调用

  • 在函数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("我在最开始执行")
}

用途

  • 关闭文件
  • 关闭链接
  • 解锁
  • 资源释放