一尘不染

避免在类型开关的分支中使用类型断言

go

我在Go中使用类型开关,例如以下代码:

switch question.(type) {
case interfaces.ComputedQuestion:
    handleComputedQuestion(question.(interfaces.ComputedQuestion), symbols)
case interfaces.InputQuestion:
    handleInputQuestion(question.(interfaces.InputQuestion), symbols)
}

有没有一种方法可以防止在将问题传递给另一个函数之前必须断言案件中的问题类型?


阅读 177

收藏
2020-07-02

共1个答案

一尘不染

是的,分配类型切换的结果将为您提供断言的类型

switch question := question.(type) {
case interfaces.ComputedQuestion:
    handleComputedQuestion(question, symbols)
case interfaces.InputQuestion:
    handleInputQuestion(question, symbols)
}

http://play.golang.org/p/qy0TPhypvp

2020-07-02