GO 记录 : 反射的使用 : 获取 结构体字段,设置结构体字段

798 阅读1分钟

GO 的反射需要用到 reflect ,下面是例子:Copy(复制) 后就能用

通过反射 获取 结构体字段,设置结构体字段

/*
* Copyright(C),2019-2020, email: 952651117@qq.com
* Author:  dao
* Version: 1.0.0
* Date:    2021/6/8 17:14
* Description:
*
 */

package main

import (
	"fmt"
	"reflect"
)

type Student struct {
	Id   int
	Name string
}

func main() {
	n := Student{1, "赵"}
	// 获取结构体的值
	studentRV := reflect.ValueOf(n)
	id := studentRV.FieldByName("Id").Int()        //1
	name := studentRV.FieldByName("Name").String() //赵
	fmt.Println("id =", id, ", Name =", name)      // id = 1 , Name = 赵

	// 设置结构体的值
	studentRVE := reflect.ValueOf(&n).Elem()
	studentRVE.FieldByName("Id").SetInt(2)
	studentRVE.FieldByName("Name").SetString("周")
	fmt.Println("id =", n.Id, ", Name =", n.Name) // id = 2 , Name = 周
}