我在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) }
http://play.golang.org/p/qy0TPhypvp