go中defer的 执行顺序
# 如果一个函数中有多个defer语句,它们会以LIFO(后进先出)的顺序执行,哪怕函数或某个延迟调用发生错误,这些调用依旧会被执。
#defer 在函数内部使用,一般多用在枷锁、解锁;打开文件、关闭文件等成对出现的情况
func testSub(x int) { result := 100 / x fmt.Println("result = ", result) } 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
//补充:
posted on 2021-01-06 14:56 HelloOcean 阅读(608) 评论(0) 收藏 举报
浙公网安备 33010602011771号