Go 学习笔记:延迟执行函数 defer
来源:互联网 发布:工程造价软件破解版 编辑:程序博客网 时间:2024/05/18 00:36
Go语言中有种不错的设计,即延迟(defer)语句,你可以在函数中添加多个defer语句。当函数执行到最后时,这些defer语句会按照逆序执行,最后该函数返回。特别是当你在进行一些打开资源的操作时,遇到错误需要提前返回,在返回前你需要关闭相应的资源,不然很容易造成资源泄露等问题。如下代码所示,我们一般写打开一个资源是这样操作的:
func ReadWrite() bool { file.Open("file") // 做一些工作 if failureX { file.Close() return false } if failureY { file.Close() return false } file.Close() return true}
我们看到上面有很多重复的代码,Go的defer有效解决了这个问题。使用它后,不但代码量减少了很多,而且程序变得更优雅。在defer后指定的函数会在函数退出前调用。
func ReadWrite() bool { file.Open("file") defer file.Close() if failureX { return false } if failureY { return false } return true}
如果有很多调用defer,那么defer是采用后进先出模式,所以如下代码会输出4 3 2 1 0
for i := 0; i < 5; i++ { defer fmt.Printf("%d ", i)}
阅读全文
0 0
- Go 学习笔记:延迟执行函数 defer
- GO语言延迟函数defer用法分析
- Go学习笔记:关于defer
- GO语言defer延迟代码
- Go语言学习笔记 --- defer 、panic 、recover
- Go语言优雅设计之-defer(延迟)
- Go语言defer学习小结
- go语言defer执行时机简单分析
- go的defer和return执行顺序
- Go 函数 学习笔记
- 第6课 Go函数func&defer
- go defer
- go语言的defer用法学习
- GO学习系列:defer的使用
- Android学习笔记--adapter.notifyDataSetChanged()延迟执行
- Go语言学习笔记---函数
- JavaScript 笔记 - <script>标签 defer属性 (延迟脚本)
- setTimeout延迟执行函数
- IT风投与中国
- jq插件 datatable的使用(附上window一些方法)
- 二周三次课
- 构建支持SSH服务的镜像
- 《Spring实战》读书笔记——第一章 Spring之旅
- Go 学习笔记:延迟执行函数 defer
- jquery ajax异步 获得返回值
- markdown backup
- easyui相关笔记
- Java面试题全集(上)
- python yield
- RocketMQ原理解析-consumer 6.pull消息消费
- Dorado控件调用
- PCL安装的一些问题总结