2017-02-06 151 views
0
一个struct

假设我有2层结构:如何确定是否类型是Golang

type Base struct { 
id int 
name string 
} 

type Extended struct { 
Base 
Email string 
Password string 
} 

,我想反映扩展的结构来得到它的领域:

e := Extended{} 
e.Email = "[email protected]" 
e.Password = "secret" 

for i := 0 ; i < reflect.TypeOf(e).NumField() ; i++ { 
    if reflect.TypeOf(e).Field(i) != "struct" { << how to do this validation? 
    fmt.Println(reflect.ValueOf(e).Field(i)) 
    } 
} 
+1

请参阅http://stackoverflow.com/help/how-to-ask关于如何问一个好问题的quidlines。 你的文章实际上并没有提出问题。 – PaulNUK

回答

3

只需选中类()价值

if reflect.ValueOf(e).Field(i).Kind() != reflect.Struct { 
    fmt.Println(reflect.ValueOf(e).Field(i)) 
} 
+0

其实应该是: reflect.ValueOf(e).Field(i).Type.Kind() 你想在调用func后调用.Type字段(i) 谢谢,无论如何,我已经解决了它,因为你的指针 –

+0

似乎采取类型不是必要的原因值本身也有Kind()。 – Uvelichitel

相关问题