所以如果我在Go中有以下结构:
type Person struct {
name string
age int
}
鉴于我们不知道Person
结构包含什么,我们怎样才能以编程方式找到?我看了一下,似乎可以用反射来做这件事吗?
即使只获取struct数据的键也是一个开头,因为类型为[]string
,但理想情况下返回类型也很有用。
答案 0 :(得分:2)
你确实可以使用反射来做到这一点。您主要想要reflect.TypeOf
,reflect.Type.Field
,reflect.Type.NumField
和reflect.StructField
代码:
package main
import "fmt"
import "reflect"
type Person struct {
name string
age int
}
func main() {
typ := reflect.TypeOf(Person{})
for i := 0; i < typ.NumField(); i++ {
field := typ.Field(i)
fmt.Println("Field name:", field.Name)
fmt.Println("Field type:", field.Type)
fmt.Println()
}
}
一些注意事项:
reflect.ValueOf
并将指针传递给结构,然后调用Value.Elem()