TypechoJoeTheme

至尊技术网

登录
用户名
密码
搜索到 1 篇与 的结果
2025-11-25

Golang如何使用reflect包实现动态调用

Golang如何使用reflect包实现动态调用
动态调用方法的完整流程假设我们有一个结构体,包含若干公开方法:go type UserService struct{}func (u *UserService) GetUser(id int) string { return fmt.Sprintf("User %d", id) }func (u *UserService) SaveUser(name string) bool { return true }现在,我们希望不通过硬编码方式调用这些方法,而是根据传入的方法名和参数动态执行。这就需要用到 reflect.Value.MethodByName() 和 Call() 方法。首先,创建一个实例并获取其反射值:go user := &UserService{} v := reflect.ValueOf(user)注意:这里传入的是指针,因为我们要调用的是指针接收者的方法。如果方法定义在值接收者上,也可以传入值类型。接下来,通过方法名查找对应的方法:go method := v.MethodByName("GetUser") if !method.IsVa...
2025年11月25日
2 阅读
0 评论