多个defer的执行顺序以及其相关练习

【golang】多个defer的执行顺序以及其相关练习

前言

  做了几道关于defer的测试题,吓了一大跳,感觉自己之前的理解有些问题,所以写下这篇博客,加深下印象。

正文:

  多个defer的执行顺序:

   先进后出,类似于栈的特性。

  下面我们来测试下:

  1.defer 与 panic:

    

func deferAndPanic() {
    defer func() { fmt.Println("defer1") }()
    defer func() { fmt.Println("defer2") }()
    defer func() { fmt.Println("defer3") }()
    panic("异常内容")
}

func main() {
    deferAndPanic()
    fmt.Println("main 正常结束")
}
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 多个defer的执行顺序以及其相关练习