这是我想要做的。
person := map[string]int {
"age": 20,
}
var p interface{} = person
v := reflect.ValueOf(p)
// I want to get/set the value of age here from v e.g. v["age"]
// how can I do that
最佳答案
不需要使用reflect
,您可以键入断言:
person := map[string]int{
"age": 20,
}
var p interface{} = person
age := p.(map[string]int)["age"] // get
p.(map[string]int)["something"] = 10 //set
编辑:似乎您的问题是关于您不知道 map 键/值类型的情况。在这种情况下,您可以使用以下命令遍历 map 元素:v := reflect.ValueOf(p)
itr := v.MapRange()
for itr.Next() {
fmt.Println(itr.Key(), itr.Value())
}
或者,如果您需要特定的元素,请使用:v.MapIndex(reflect.ValueOf("age")) // returns 20
同样,为了设置新值,您可以:v.SetMapIndex(reflect.ValueOf("somekey"), reflect.ValueOf(7))
关于go - 如何从 map 界面获取/设置值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66081036/