博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go-defer拿下
阅读量:5319 次
发布时间:2019-06-14

本文共 1527 字,大约阅读时间需要 5 分钟。

defer使用

1 package main 2  3 import "fmt" 4  5 func main() { 6     //defer延迟调用,main函数结束前调用 7     defer fmt.Println("22222不是第一时间打印,延迟打印") 8     fmt.Println("第一时间打印") 9 10     /*11         输出:12             第一时间打印13             22222不是第一时间打印,延迟打印14     */15 }
View Code

 

多个defer执行顺序

若果一个函数中有多个defer语句,则会以LIFO后进先出的顺序执行,

哪怕函数或某个延迟调用发生错误,这些调用依旧会被执行

1 package main 2  3 import "fmt" 4  5 func test(x int) { 6     res := 100 / x 7     fmt.Println("res=", res) 8 } 9 10 func main() {11     defer fmt.Println("111")12     defer fmt.Println("222")13 14     defer fmt.Println("333")15     //分母为0,导致程序出错(程序崩了),16     // test()不加defer,只打印“333”和“222”和“111”,且顺序是333,222,111,后续就不打印了17     //test(0)18     //test()加defer,顺序打印“555”和“444”和“333”和“222”和“111”19     defer test(0)20     defer fmt.Println("444")21     defer fmt.Println("555")22 }
View Code

 

defer和匿名函数闭包调用结合使用

1 package main 2  3 import "fmt" 4  5 func main() { 6     a := 10 7     b := 20 8     defer func(x int, y int) { 9         fmt.Printf("内部: x=%d, y=%d", x, y)10     }(a, b) //()代表调用此匿名函数,把参数传递过去,已经先传递参数,只是没有调用11     a = 11112     b = 22213     fmt.Printf("外部:a=%d, b=%d\n", a, b)14     //输出:外部:a=111, b=22215     //        内部: a=10, b=2016 }17 18 func main01() {19     a := 1020     b := 2021     defer func() {22         fmt.Printf("内部: a=%d, b=%d", a, b)23     }()24     a = 11125     b = 22226     fmt.Printf("外部:a=%d, b=%d\n", a, b)27     //输出:外部:a=111, b=22228     //        内部: a=111, b=22229 }
View Code

 

转载于:https://www.cnblogs.com/Paul-watermelon/articles/10850160.html

你可能感兴趣的文章
spring11----基于Schema的AOP
查看>>
解决input框自动填充为黄色的问题
查看>>
音视频基础知识(一)
查看>>
JAVA⑤
查看>>
CyclicBarrier的使用
查看>>
thinkphp的select和find的区别
查看>>
小程序开发笔记
查看>>
Web框架高级功能之模板、拦截器、Json、打包
查看>>
如何辨别一个程序员的水平高低?是靠发量吗?
查看>>
安装scikit-learn过程记录
查看>>
数据库的标识符可以有多长
查看>>
新手村之循环!循环!循环!
查看>>
在创业公司上班的感受
查看>>
Shell脚本
查看>>
masm32V11配置
查看>>
ASP.NET中Request.ApplicationPath、Request.FilePath、Request.Path、.Request.MapPath
查看>>
通过Python、BeautifulSoup爬取Gitee热门开源项目
查看>>
正则表达式的用法
查看>>
线程安全问题
查看>>
集合的内置方法
查看>>