如何避免類型切換分支中的類型斷言
在 Go 中,類型切換通常用於處理不同類型的物件。然而,在每種情況下手動斷言物件的類型可能會變得乏味。這個問題解決了消除對此類斷言的需要的問題。
原始問題:
我使用以下類型開關:
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) }
在此範例中,問題 := Question.(type) 表達式將類型切換的結果指派給問題變數。類型開關本身保持不變。
這種方法透過消除案例中手動類型斷言的需要來簡化您的程式碼,使其更加簡潔且更易於閱讀。
以上是如何避免 Go 類型切換案例中的類型斷言?的詳細內容。更多資訊請關注PHP中文網其他相關文章!