type Role int
type User struct {
Id int64
Name string
Role Role
}
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().String()
fmt.Printf("Name: %s Kind: %s Type: %s\n", n, f.Kind(), t)
}
}
func main() {
var u User
ListFields(&u)
}
运行 main.go:go run main.go
名称:Id 类型:int64 类别:int64
名称:Name 类型:string 类别:string
名称:Role 类型:main.Role 类别:int <--- 如何获取 int 类型?
reflect.TypeOf(Role(0))
获取reflect.TypeOf(int(0))
。您可以使用Type.Kind来反映底层类型。为什么需要获取int
类型? - Charlie Tumahai