下面是Go通过反射机制读取结构体信息的例子
package main
import (
    "fmt"
    "reflect"
)
// 定义一个结构体
type Person struct {
    Name string
    Age  int
}
func main() {
    // 创建一个Person类型的实例
    person := Person{Name: "Tizi365", Age: 30}
    // 获取person变量的类型信息
    personType := reflect.TypeOf(person)
    // 获取person变量的值信息
    personValue := reflect.ValueOf(person)
    // 遍历person变量的结构体字段
    for i := 0; i < personType.NumField(); i++ {
        // 获取字段的类型信息
        fieldType := personType.Field(i)
        // 获取字段的值信息
        fieldValue := personValue.Field(i)
        // 输出字段名称和值
        fmt.Printf("%s: %v\n", fieldType.Name, fieldValue)
    }
}
输出结果
Name: Tizi365
Age: 30
下面是通过反射机制调用函数的例子
package main
import (
    "fmt"
    "reflect"
)
func main() {
    // 定义一个函数
    func1 := func(a int, b int) int {
        return a + b
    }
    //获取函数的反射类型
    funcVal := reflect.ValueOf(func1)
    //创建一个切片来存储函数参数
    params := make([]reflect.Value, 2)
    params[0] = reflect.ValueOf(10)
    params[1] = reflect.ValueOf(20)
    //通过Call函数来调用函数
    result := funcVal.Call(params)
    //结果是一个切片,需要取第一个元素
    fmt.Println(result[0].Int()) //30
}