go 关于defer

 

    关于defer的三条重要原则:

  

    1、一个deferred 函数的参数会先被计算好。

    2、一个函数里的所有deferred函数会按照LIFO顺序执行。

    3、deferred函数可能会读取命名返回值并赋值。(当函数有命名返回值的时候)

 

    当有命名返回值,并有defer的时候,要特别小心。

    当panic(恐慌)遇到recover时,会恢复当前goroutine的正常执行,否则向上一层层引发panic,直到

        当前goroutine的函数栈的所有函数都返回,最终导致当前goroutine停止运行。

    defer后面只能跟函数调用。(执行单条语言无太大意义)

    recover只能在defer的函数里使用。(发生panic后,只有defer后面的函数会执行)

你可能感兴趣的:(Go,defer,panic,recover)