面试题答案
一键面试-
实现步骤:
- 获取结构体实例的反射值对象
reflect.Value
。 - 通过反射值对象获取方法的
reflect.Value
。 - 准备方法调用所需的参数(如果方法有参数),以
[]reflect.Value
形式传递。 - 调用方法并获取返回值。
- 获取结构体实例的反射值对象
-
关键代码示例:
package main
import (
"fmt"
"reflect"
)
type User struct {
Name string
}
func (u User) GetName() string {
return u.Name
}
func main() {
user := User{Name: "John"}
// 获取结构体实例的反射值对象
valueOf := reflect.ValueOf(user)
// 获取方法的reflect.Value
method := valueOf.MethodByName("GetName")
// 调用方法,这里GetName无参数,所以传递nil
results := method.Call(nil)
// 处理返回值
if len(results) > 0 {
fmt.Println(results[0].String())
}
}