2
我嘗試使用反射來建立一個常規的,將列表中的名稱,種類和獲取傳遞任意結構的所有字段的類型這裏是我到目前爲止有:如何使用Golang Reflection獲取作爲分片的結構字段的類型? 。
type StatusVal int
type Foo struct {
Name string
Age int
}
type Bar struct {
Status StatusVal
FSlice []Foo
}
func ListFields(a interface{}) {
v := reflect.ValueOf(a).Elem()
for j := 0; j < v.NumField(); j++ {
f := v.Field(j)
n := v.Type().Field(j).Name
t := f.Type().Name()
fmt.Printf("Name: %s Kind: %s Type: %s\n", n, f.Kind(), t)
}
}
func main() {
var x Bar
ListFields(&x)
}
輸出如下:
Name: Status Kind: int Type: StatusVal
Name: FSlice Kind: slice Type:
當該字段是一個片,所述類型是空白的。我嘗試了幾種方法來獲得切片的數據類型,但所有的努力造成了恐慌......通常這一個:
reflect: call of reflect.Value.Elem on slice Value
需要將此代碼做哪些改變,使所有字段,包括類型切片,會在輸出中列出?
這裏的操場鏈路:https://play.golang.org/p/zpfrYkwvlZ
美麗!感謝icza! – sman