go中defer的 执行顺序

2021-01-05  本文已影响0人  小ocean

如果一个函数中有多个defer语句,它们会以LIFO(后进先出)的顺序执行,哪怕函数或某个延迟调用发生错误,这些调用依旧会被执


func TestDeferFunc(t *testing.T) {

defer fmt.Println("aaaaaaaaaaaaaaaa")

defer fmt.Println("bbbbbbbbbbbbbbbb")

//调用一个函数,导致内存出问题,除数不能为0

  defer func() {

testSub(0)

}()

defer fmt.Println("cccccccccccccccc")
}
//输出结果:
//先进后出原则
//cccccccccccccccc
//bbbbbbbbbbbbbbbb
//aaaaaaaaaaaaaaaa
//panic: runtime error: integer divide by zero
上一篇 下一篇

猜你喜欢

热点阅读