在 Golang 中,通过 反射 的 reflect.ValueOf()
获得反射的对象信息后,如果是 结构体 类型,可以通过反射 值对象(reflect.Value)的详细信息来获取结构体字段的值。
personValue := reflect.ValueOf(person)
nameValue := personValue.FieldByName("Name").String()
通过 reflect.ValueOf 获取结构体的值信息,再次使用结构体值信息的 FieldByName 获取对应的字段信息,最后使用字段信息对应的类型函数,获取结构体字段的值。
通过反射获取结构体的所有字段以及字段值
package main
import (
"fmt"
"reflect"
)
type Person struct {
Name string `json:name`
Age int `json:age`
}
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
person := Person{
Name:"HaiCoder",
Age:109,
}
personValue := reflect.ValueOf(person)
nameValue := personValue.FieldByName("Name").String()
ageValue := personValue.FieldByName("Age").Int()
fmt.Println("Name Value =", nameValue, "Age Value =", ageValue)
}
程序运行后,控制台输出如下:
首先,我们定义了一个 Person 结构体,结构体含有两个字段,一个 字符串 类型的 Name 和一个 int 类型的 Age。
接着,我们使用 reflect.ValueOf
获取结构体实例的值信息,并使用实例信息的 FieldByName() 获取字段详细信息,最后,通过字段信息的类型对应的方法获取字段的值。
在 Golang 中,通过反射的 reflect.ValueOf()
获得反射的对象信息后,如果是结构体类型,可以通过反射值对象(reflect.Value)的详细信息来获取结构体字段的值。Go 语言反射解析结构体字段值语法:
personValue := reflect.ValueOf(person)
nameValue := personValue.FieldByName("Name").String()