您的位置 首页 技术

golang defer什么时候执行

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

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在延迟函数之前延迟函数是执行不了的,毕竟抛出异常。

以上就是golang defer什么时候执行的详细内容,更多请关注24课堂在线网其它相关文章!

本文来自网络,不代表24小时课堂在线立场,转载请注明出处:https://www.24ketang.cn/9117.html

为您推荐

返回顶部