duandong1963 2016-03-18 18:30
浏览 23
已采纳

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

I use type switches in Go, e.g. the following one:

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

Is there a way to prevent that I have to assert the type of question inside the case before I can pass it to another function?

  • 写回答

1条回答 默认 最新

  • doufei2194 2016-03-18 18:37
    关注

    Yes, assigning the result of the type switch will give you the asserted type

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗