golang defer什么时候执行

发布时间:2022-05-15 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了golang defer什么时候执行脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

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

package main

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

执行结果如下:

test1
test3
defer test2

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

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

package main

func main() {
    test()
}func test() {

    println("test1")
        panic("panic")    defer func() {
        println("defer test2")
    }()
    
    println("test3")
}

输出

test1
panic: panic
Process finished wITh exit code 2

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

package main

func main() {
    test()
}func test() {

    println("test1")    defer func() {
        println("defer test2")
    }()
    panic("panic")
    println("test3")
}

输出

test1
defer test2
panic: panic

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

以上就是golang defer什么时候执行的详细内容,更多请关注脚本宝典其它相关文章

脚本宝典总结

以上是脚本宝典为你收集整理的golang defer什么时候执行全部内容,希望文章能够帮你解决golang defer什么时候执行所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: