2017-02-06 198 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

相關問題