我是Go的新手。我想知道如何在Go中使用Reflection来从中获得映射的值(value)。
type url_mappings struct{ mappings map[string]string}func init() { var url url_mappings url.mappings = map[string]string{ "url": "/", "controller": "hello"}
谢谢

最佳答案

import "reflect"
v := reflect.ValueOf(url)
f0 := v.Field(0) // Can be replaced with v.FieldByName("mappings")
mappings := f0.Interface()
mappings的类型为interface {},因此您不能将其用作 map 。
要使它的类型真正的mappingsmap[string]string,您需要使用一些type assertion:
realMappings := mappings.(map[string]string)
println(realMappings["url"])

由于重复map[string]string,我将:
type mappings map[string]string

然后您可以:
type url_mappings struct{
    mappings // Same as: mappings mappings
}

10-07 17:01