消除类型切换中的重复代码

时间:2017-01-15 13:00:37

标签: go struct casting dry

由于我无法在类型切换中使用fallthrough,有没有办法在这段代码中合并这两种情况?

switch v := moduleSource.(type) {
            case Driver:
               dec.Decode(&v)
                _, _ = ormInstance.Insert(&v)

            case Metric:
                dec.Decode(&v)
                _, _ = ormInstance.Insert(&v)

            default:
                    fmt.Println("unknown type")
    }

ORM调用ormInstance.Insert()必须有正确的结构才能工作。

1 个答案:

答案 0 :(得分:0)

类型切换中允许使用类型列表,如Go spec

中所定义
switch v := moduleSource.(type) {
    case *Driver, *Metric:
        // v has the same type as moduleSource
        dec.Decode(v)
        _, _ = ormInstance.Insert(v)

    default:
        fmt.Println("unknown type")
}