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 = 周
}