一尘不染

将值类型转换为Golang中的Map?

go

我从“ reflect”包中的函数调用获取此返回值:

< map[string]string Value >

想知道我是否可以在返回值内访问实际地图,如果可以,怎么办?

编辑:

因此,这是我在进行返回Value对象的调用的地方。它返回`[< map[string]string Value

]到我抓取该数组中的第一个对象的位置。但是,我不确定如何转换[< map[string]string Value >]`为常规地图。

view_args := reflect.ValueOf(&controller_ref).MethodByName(action_name).Call(in)

阅读 229

收藏
2020-07-02

共1个答案

一尘不染

使用方法Value可以将大多数反射对象转换回一个interface{}值。.Interface()

获取此值后,可以将其断言回所需的地图。示例(播放):

m := map[string]int{"foo": 1, "bar": 3}
v := reflect.ValueOf(m)
i := v.Interface()
a := i.(map[string]int)

println(a["foo"]) // 1

在上面的示例中,m是您的原始地图,并且v是反射值。该方法i获取的接口值Interface被断言为类型,map[string]int并且该值在最后一行中按原样使用。

2020-07-02