首页 > 文章列表 > Golang 如何动态访问结构体属性?

Golang 如何动态访问结构体属性?

golang
374 2023-06-08

问题内容

Golang 如何动态访问结构体属性?

正确答案

在 Go 中,可以使用反射来动态访问结构体的属性。下面是一个示例,展示如何使用反射动态访问结构体属性:

package main

import (
	"fmt"
	"reflect"
)

type Person struct {
	Name string
	Age  int
}

func main() {
	p := Person{Name: "John", Age: 30}

	// 使用反射获取结构体类型
	pType := reflect.TypeOf(p)

	// 使用反射获取结构体字段值
	nameField, _ := pType.FieldByName("Name")
	ageField, _ := pType.FieldByName("Age")

	nameValue := reflect.ValueOf(p).FieldByName("Name").String()
	ageValue := reflect.ValueOf(p).FieldByName("Age").Int()

	fmt.Printf("Name: %s, Age: %dn", nameValue, ageValue)
	fmt.Printf("Name Field: %+vn", nameField)
	fmt.Printf("Age Field: %+vn", ageField)
}