如何在不知道值的类型的情况下访问地图的键?

时间:2018-02-21 22:06:50

标签: go types casting

如果我在界面变量中有地图并想要访问某个键,但不知道地图的值是什么类型,我该如何访问该键?

Here是游乐场上的一个例子

要解决我的问题,我需要弄清楚如何使主函数运行没有错误。

1 个答案:

答案 0 :(得分:3)

使用reflect包对任意地图类型进行操作:

func GetMapKey(reference interface{}, key string) (interface{}, error) {
    m := reflect.ValueOf(reference)
    if m.Kind() != reflect.Map {
        return nil, errors.New("not a map")
    }
    v := m.MapIndex(reflect.ValueOf(key))
    if !v.IsValid() {
        return nil, errors.New("The " + key + " key was not present in the map")
    }
    return v.Interface(), nil
}