首頁 > 後端開發 > Golang > 如何避免 Go 類型切換分支內的型別斷言?

如何避免 Go 類型切換分支內的型別斷言?

Susan Sarandon
發布: 2024-12-06 09:21:11
原創
896 人瀏覽過

How Can I Avoid Type Assertions Inside Go's Type Switch Branches?

消除類型切換分支內的類型斷言

在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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板