假设我有一个 Foo 结构,其方法定义如下:
type Foo struct {
Name string
}
func (f *Foo) Get(a int, b string) (string, error) {
return f.Name, nil
}
如果我写
obj := &Foo{}
t := reflect.TypeOf(obj.Get)
t.Kind()返回reflect.Func并且显然我无法访问Getfunc 我从“属于”结构中提取类型信息的信息Foo,即接收器是类型的Foo,它甚至没有出现在参数中。
我想这是故意的,我错过了一些关于函数的基本知识,这些函数使语言作者丢弃了应用于方法引用的 typeof 操作的接收者信息。
我有两个问题:
我是对的吗,没有办法通过TypeOf
上面的调用在代码段中获取接收者类型?
如果我想将有关方法的反射信息传递给一些旨在分析函数和相关接收器(即本质上是方法)的代码,我有哪些选择?
尝试自己回答第二个问题,根据我在官方文档中看到的内容,看起来我唯一的选择是传递 TypeOf(receiver) 和 TypeOf(receiver.method) 或 TypeOf(receiver) 和接收者方法的名称.
肥皂起泡泡
相关分类