8.19 被誤解的關鍵字:goto

yzm65580952 發表於 2020-10-30
Go

8.19 被誤解的關鍵字:goto

goto的歷史爭議

劣勢

無限制使用goto,特別是往回跳,使程式結構複雜
任何程式都可使用順序、分支、迴圈三種結構表示出來

優勢

函式內的出錯出口的統一處理、指定唯一出口
當多層巢狀時,比break、return更有優勢
既能提高效率,也不會破壞程式良好的結構

哪些地方建議使用goto?

  1. 函式出錯時的處理
    函式內部模組化設計:將函式主邏輯程式碼和出錯處理部分隔離,
    結構更加清晰
    程式碼複用:將一個函式多個出口歸併為一個總出口
    資源統一處理:記憶體釋放、鎖、控制程式碼…

使用注意的一些地方

不要往回跳、只能往前跳
使用goto只能在同一函式內跳轉
goto標籤一般在兩段不同邏輯功能程式碼的交界處
不能大量使用