反射可以根据传参调用不同结构体函数,具体实现步骤如下:

  1. 定义结构体类型和方法
type A struct {
    Name string
}

func (a *A) SayHello() {
    fmt.Println('Hello from A')
}

type B struct {
    Age int
}

func (b *B) SayHello() {
    fmt.Println('Hello from B')
}
  1. 通过反射获取结构体类型和方法
func CallSayHello(obj interface{}) {
    v := reflect.ValueOf(obj)
    m := v.MethodByName("SayHello")
    m.Call(nil)
}
  1. 根据传参调用不同结构体函数
func main() {
    a := &A{Name: "Alice"}
    b := &B{Age: 20}

    CallSayHello(a) // 输出:Hello from A
    CallSayHello(b) // 输出:Hello from B
}

通过反射获取传入对象的类型和方法,再调用方法即可实现根据传参调用不同结构体函数。

Go 反射:根据参数调用不同结构体函数

原文地址: https://www.cveoy.top/t/topic/lqYy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录