1. 程式人生 > >golang 初體驗 - 令人驚嘆的語法 - defer.4 - defer 對宿主函數返回值的影響

golang 初體驗 - 令人驚嘆的語法 - defer.4 - defer 對宿主函數返回值的影響

函數返回值 info 結果 bubuko img 圖片 png inf mage

defer 函數可以影響宿主函數的返回值

看代碼:

技術分享圖片

調用:

技術分享圖片

輸出:

技術分享圖片

結果又讓人意外了。

coo1:因為傳引用,return 時 i = 100, return 返回的也是 100,return 執行之後執行 defer 將 i 變為 300,故,i = 300,r = 100

coo2:因為傳引用,return 時 i = 100, return 執行後 defer 將 r 變為 300,然後返回,故,i = 100, r = 300。其實 defer 的 r 可以理解為就是 i

總結:defer 函數只有在操作宿主函數的返回值後才會影響宿主的返回結果

golang 初體驗 - 令人驚嘆的語法 - defer.4 - defer 對宿主函數返回值的影響