defer压后的作用是使defer
语句在所在函数返回后才执行。
比如:
func f() (result int){
defer func(){
result++
}()
return 1
}//本段代码来自《Go语言云动力》4.6
最终f将会2,而不是1,因为return 1之后,result++执行
下面可以思考一下,这段代码:
for i:=0;i<=3;i++{
defer fmt.Print(i)
}
事实上,将会打印3 2 1 0
//defer执行时,会对函数参数立即求值,但不会立即调用。在所在函数执行完成后,defer会按照后进先出原则调用执行。
The Original Link: http://baham.github.io/12_05_goyu-yan-deferya-hou.html
If you want to reprint it, please do under the CC BY-NC-SA 4.0