defer的词义:”延迟“,”推迟“
在go语言中使用关键字defer来延迟一个函数或方法的执行
1.defer 函数或方法:一个函数或方法的执行被推迟了
2.defer的用法:
A:对象.close(),临时文件的删除...
B:go语言中关于异常的处理,使用panic()和recover()
panich函数用于引发恐慌,导致程序中断执行
recover函数用于恢复程序的执行,recover语法上要求必须在defer中执行
3.当一个函数有多个延迟调用时,它们被添加到一个堆栈中,并在Last In First Out(LIFO)后进先出的顺序中执行
4.defer函数传递参数的时候:defer函数调用时,就已经传递参数数据了,只是暂时不执行函数中的代码而已
5.defer函数的注意点:
defer函数:
当外围函数中的语句正常执行完毕时,只有其中所有的延迟函数都执行完毕,外围函数才会真正的结束执行。
当执行外围函数中的return语句时,只有其中所有的延迟函数都执行完毕后,外围函数才会真正返回。
先defer的后执行,后defer的先执行。
当外围函数中的代码引发运行恐慌时,只有其中所有的延迟函数都执行完毕后,该运行时恐慌才会真正被扩展至调用函数。