Golang有一个特殊的控件语句,那就是defer,defer语句用于延迟调用指定的函数,比如释放资源等,它会在函数最后执行,但在return之前,先让我们看代码简单了解下: (推荐学习:go)

package mainfunc main() {    test()}func test() {    println("test1")    defer func() {        println("defer test2")    }()    println("test3")}

执行结果如下:

test1test3defer test2

很清楚地看到,有defer那个函数最后才执行的

现在改一下代码,让代码panic,当抛出异常时,defer延迟函数还会执行吗?

package mainfunc main() {    test()}func test() {    println("test1")        panic("panic")    defer func() {        println("defer test2")    }()        println("test3")}

输出

test1panic: panicProcess finished with exit code 2

延迟函数居然没有执行,为什么会这样呢?是因为panic在延迟函数之前了,再改一下代码如下

package mainfunc main() {    test()}func test() {    println("test1")    defer func() {        println("defer test2")    }()    panic("panic")    println("test3")}

输出

test1defer test2panic: panic

延迟函数执行了,可以看到panic在延迟函数之前延迟函数是执行不了的,毕竟抛出异常。

更多相关文章

  1. go语言的init函数详解
  2. go语言​中的包引入、函数、变量使用
  3. go语言函数介绍
  4. golang不可重入函数实现
  5. golang的函数怎么写
  6. golang代码能不能加密
  7. golang 怎么调用c代码
  8. 从go语言闭包谈函数式编程
  9. go语言中函数与方法介绍

随机推荐

  1. adb 获取平台号
  2. Android 4.4报错,Android 7.0运行正常 Win
  3. layout_gravity="bottom" 失效
  4. 总结系列-Android的文件系统
  5. Anko:Android 代码动态布局的新方案
  6. Android中Timer与TimerTask的使用 间隔执
  7. Android Studio Error:Could not find co
  8. ANDROID学习之路
  9. Android(安卓)如何退出程序
  10. android textview系统默认的颜色值是多少