Fork me on GitHub

Go语言开发-过程式编程-Defer,Panic和Recover

5.5. Defer,Panic,和Recover

defer语句用于将函数或方法(或匿名函数)延迟到函数结束或方法返回之前但要在返回值(如果有的话)计算之后执行。这也使得在defer语句块中修改函数的返回值成为可能(例如,使用运算符=赋值)。如果在一个函数或方法中使用了多个defer语句,则按照LIFO(后进先出)顺序执行。

defer语句最常见的用途是确保已成功打开的文件在使用完成后石实时关闭,关闭不再需要的channel,或捕获panic。

上面的代码取自wordfrequency项目中的updateFrequencies()函数,这是defer语句关闭文件的典型使用。

这种创建相应的值并在垃圾回收之前在defer中清理该值(例如,释放该值使用的资源)的模式是Go 语言中的标准用法。 当然,我们也可以针对自定义类型使用这种模式,并提供一个Close()或Cleanup()函数,尽管这在实际中很少使用。


目录


作者:Johnson
原创文章,版权所有,转载请保留原文链接。

发表评论

电子邮件地址不会被公开。 必填项已用*标注