[Golang]一道考察defer與命名返回值的題目

題目

輸出:
4
1
3函數

解釋

  1. 當函數有可命名結果形參時,結果形參的初始值被設置爲零值,函數的return語句會設置結果形參的值

  1. 當函數有可命名結果形參時,defer函數是能夠修改它,而後再將它的值返回

DeferFunc1 和DeferFunc3是兩個有命名結果形參的函數,結果形參的賦值過程爲:
DeferFunc1 :
t:= 0
t = 1
t +=3 -> t = 4blog

DeferFunc3:
t:=0
t = 2
t += 1 -> t = 3變量

DeferFunc2 函數沒有可命名結果形參,t只是個普通局部變量,defer沒法對返回值作修改。返回1.im

相關文章
相關標籤/搜索