douzhu3367 2018-04-19 15:03
浏览 527
已采纳

如何处理switch case语句中返回的两个对象

I'm writing type assertion helper method which accepts an interface{} and returns string along with map[string]interface{}. I'm returning both objects within a case statement. Why is it asking for return at end of function? Am i missing a break?

func typeAssertionHelper(r interface{}) (string, map[string]interface{}) {
    switch g := r.(type) {
    case string:
        return g, nil
    case []interface{}:
        for _, v := range g {
            switch s := v.(type) {
            case string:
                return s, nil
            case map[string]interface{}:
                return "", s
            }
        }
    }
    // missing return end of function
}
  • 写回答

2条回答 默认 最新

  • douxin1956 2018-04-19 15:08
    关注

    The r interface{} that's being passed in does not necessarily match one of the cases that you have in the switch block.

    Essentailly the switch is not exhaustive.

    You could extend the switch with a default case:

    switch g := r.(type) {
     case string:
         ...
     case []interface{}:
         ...
     default:
         ...
    }
    

    Or just return something at the end of the function

    return "", nil

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测