Go语言中defer的调用顺序简单测试代码
来源:互联网 发布:二维数组动态分配内存 编辑:程序博客网 时间:2024/06/11 04:57
Go语言中defer的调用顺序
在阅读Go语言编程的时候,看到了defer该命令
该命令是用于注册延时处理,在函数执行到return之前执行相应注册的函数。通常用来释放资源或者进行错误处理
例如
func test() error { f, err := os.Create("test.txt") if err != nil { return err } defer f.Close() f.WriteString("Hello, World!") return nil }
但多个defer同时调用的时候情况是怎样呢?书中并没有说,所以写个小程序简单试验下
func test(x int) { defer println("a") defer println("b") defer func() { println(100 / x) }() defer println("c")}func main() { test(0)}
输出
cbapanic: runtime error: integer divide by zero
由打印可以看出,defer注册的函数,会在return之前遵循FILO的规则执行。而且就算进程出错,也会将defer注册的函数执行完,外层程序会捕获该异常(这个在异常处理的时候就会使得代码非常简洁,不用考虑各种分支关系)
0 0
- Go语言中defer的调用顺序简单测试代码
- GO语言defer延迟代码
- Go语言defer的使用
- go语言defer的用法
- go语言defer执行时机简单分析
- go的defer和return执行顺序
- 关于Go语言中defer关键字
- go语言的defer用法学习
- go语言defer使用
- go语言defer使用
- go语言defer使用 .
- Go语言之defer
- Go语言defer
- go语言-defer关键字
- go defer简单理解
- go语言代码测试
- go语言 golang defer 关注点
- Go语言中的defer关键字
- 你不知道的Javascript笔记:up & going
- Threading de join用法
- 解决OutOfMemoryError错误
- 【LeetCode】 199. Binary Tree Right Side View
- Sort
- Go语言中defer的调用顺序简单测试代码
- 二叉树的性质及相关证明
- 问题五十八:怎么用ray tracing画conic sweeping图形
- 疯狼算法日记0001-字符串逆序
- 系统学习《统计自然语言处理》
- zookeeper-3.4.9集群安装
- 利用NumPy和pandas对CSV文件进行写操作
- 2017.01.16 第一篇博客
- linux学习笔记1——指令的基本格式及基本文件操作