Голанг поможет размышлениям получить ценности - PullRequest
1 голос
/ 05 июля 2011

Я очень новичок в го.Мне было интересно, как я могу получить значение отображений из этого с помощью 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 Ответ

5 голосов
/ 05 июля 2011
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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...