Go语言基础 — Defer函数

Golang Basic — Defer Function

1 min readJun 4, 2019

--

Defer的特点

  • 确保调用在函数结束时发生
  • 参数在defer语句时计算
  • defer列表为后进先出

确保调用在函数结束时发生

下面的例子中,fmt.Println(1)会比fmt.Println(2)晚执行。

再看一个文件的例子

参数在defer语句时计算 / defer列表为后进先出

关于_参数在defer语句时计算_,可以看这个例子。

得到下面的结果,可以看到defer是从10开始打印的,说明后进先出。

然后程序在10的时候停住了,但是并没有打印10个10,说明参数在defer语句时计算。

何时使用defer

  • open/close
  • lock/unlock
  • printheader/pringfooter

--

--