Golang帮助反思获得价值

时间:2011-07-05 11:00:29

标签: reflection go

我是Go的新手。我想知道如何使用Reflection in Go获得映射的值。


type url_mappings struct{
    mappings map[string]string
}

func init() {
    var url url_mappings
    url.mappings = map[string]string{
        "url": "/",
        "controller": "hello"}

由于

1 个答案:

答案 0 :(得分:5)

import "reflect"
v := reflect.ValueOf(url)
f0 := v.Field(0) // Can be replaced with v.FieldByName("mappings")
mappings := f0.Interface()

mappings的类型是interface {},因此您无法将其用作地图。 要使其mappings类型为map[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
}