- 实现思路:
- 使用
reflect.TypeOf
获取结构体实例的类型。
- 使用
reflect.ValueOf
获取结构体实例的值。
- 通过类型的
NumField
方法获取字段数量。
- 遍历字段,使用
Field
方法获取每个字段的值,使用Type
方法获取字段类型,使用Name
方法获取字段名称。
- 核心代码示例:
package main
import (
"fmt"
"reflect"
)
type Person struct {
Name string
Age int
}
func main() {
p := Person{Name: "John", Age: 30}
t := reflect.TypeOf(p)
v := reflect.ValueOf(p)
for i := 0; i < t.NumField(); i++ {
field := t.Field(i)
value := v.Field(i)
fmt.Printf("Field Name: %s, Field Type: %v, Field Value: %v\n", field.Name, field.Type, value.Interface())
}
}