我是一个新手。我想知道我如何在Go中使用反射从中获得映射的值。
<>之前
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
的类型是接口{},因此您不能将其用作映射。要使真正的mappings
的类型为map[string]string
,您需要使用一些类型断言:
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
}