Golang支持使用反射机制来动态访问struct属性,可以使用reflect包中的ValueOf函数来获取struct的反射值,然后使用FieldByName函数来获取struct中指定字段的反射值,最后使用Interface函数来获取字段的值。
示例代码:
package main
import (
"fmt"
"reflect"
)
type User struct {
Name string
Age int
}
func main() {
u := User{
Name: "John",
Age: 20,
}
// 获取User的反射值
uVal := reflect.ValueOf(u)
// 获取Name字段的反射值
nameVal := uVal.FieldByName("Name")
// 获取Name字段的值
name := nameVal.Interface().(string)
fmt.Println(name) // John
}