Go 反射:根据参数调用不同结构体函数
反射可以根据传参调用不同结构体函数,具体实现步骤如下:
- 定义结构体类型和方法
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')
}
- 通过反射获取结构体类型和方法
func CallSayHello(obj interface{}) {
v := reflect.ValueOf(obj)
m := v.MethodByName("SayHello")
m.Call(nil)
}
- 根据传参调用不同结构体函数
func main() {
a := &A{Name: "Alice"}
b := &B{Age: 20}
CallSayHello(a) // 输出:Hello from A
CallSayHello(b) // 输出:Hello from B
}
通过反射获取传入对象的类型和方法,再调用方法即可实现根据传参调用不同结构体函数。
原文地址: https://www.cveoy.top/t/topic/lqYy 著作权归作者所有。请勿转载和采集!