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

栏目: Go · 发布时间: 6年前

内容简介:defer语句用于将函数或方法(或匿名函数)延迟到函数结束或方法返回之前但要在返回值(如果有的话)计算之后执行。这也使得在defer语句块中修改函数的返回值成为可能(例如,使用运算符=赋值)。如果在一个函数或方法中使用了多个defer语句,则按照LIFO(后进先出)顺序执行。defer语句最常见的用途是确保已成功打开的文件在使用完成后石实时关闭,关闭不再需要的channel,或捕获panic。上面的代码取自wordfrequency项目中的updateFrequencies()函数,这是defer语句关闭文

5.5. Defer,Panic,和Recover

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

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

    var file *os.File
    var err error
    if file, err = os.Open(filename); err != nil {
        log.Println("failed to open the file: ", err)
        return
    }
    defer file.Close()
 

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

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

目录


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

虚拟现实:最后的传播

虚拟现实:最后的传播

聂有兵 / 中国发展出版社 / 2017-4-1 / 39.00

本书对“虚拟现实”这一诞生自70年代却在今天成为热门话题的概念进行了历史发展式的分析和回顾,认为虚拟现实是当今最重大的社会变革的技术因素之一,对虚拟现实在未来百年可能给人类社会的各个层面带来的影响进行说明,结合多个大众媒介的发展趋势,合理地推演未来虚拟现实在政治、经济、文化等领域的态势,并基于传播学理论框架提出了几个新的观点。对于普通读者,本书可以普及一般的虚拟现实知识;对于传媒行业,本书可以引导......一起来看看 《虚拟现实:最后的传播》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具