消除類型切換分支內的類型斷言
在Go 中,類型切換提供了一種基於值的類型進行分支執行的便捷方法。但是,這些分支中的類型斷言可能會變得重複且麻煩。
類型斷言避免
為了避免不必要的類型斷言,您可以將類型切換的結果分配給類型變數:
switch question := question.(type) { case interfaces.ComputedQuestion: handleComputedQuestion(question, symbols) case interfaces.InputQuestion: handleInputQuestion(question, symbols) }
在此範例中,類型開關將Question 的值指派給變數問題,根據執行的分支自動輸入。這消除了分支內顯式類型斷言的需要。
範例
考慮以下程式碼:
switch question.(type) { case interfaces.ComputedQuestion: handleComputedQuestion(question.(interfaces.ComputedQuestion), symbols) case interfaces.InputQuestion: handleInputQuestion(question.(interfaces.InputQuestion), symbols) }
將型別斷言取代為變數賦值產生以下等效程式碼:
switch question := question.(type) { case interfaces.ComputedQuestion: handleComputedQuestion(question, symbols) case interfaces.InputQuestion: handleInputQuestion(question, symbols) }
透過採用透過這種方法,您可以在不犧牲功能的情況下簡化程式碼並提高其可讀性。
以上是如何避免 Go 類型切換分支內的型別斷言?的詳細內容。更多資訊請關注PHP中文網其他相關文章!