我有一个库,其中有Client
和MockClient
都实现相同ClientInterface
接口的结构。我想编写单元测试以使这些结构保持同步,以便它们不仅实现接口,而且MockClient
具有所有Client
的方法。为此,我想获取一个结构的方法列表,以便Client
在MockClient
.
我已经尝试过调整如何在 Go 中获取函数的名称?到这个简化的例子:
package main
import (
"fmt"
"reflect"
"runtime"
)
type Person struct {
Name string
}
func (person *Person) GetName() string {
return person.Name
}
func main() {
person := Person{Name: "John Doe"}
personValue := reflect.ValueOf(&person)
for i := 0; i < personValue.NumMethod(); i++ {
fmt.Println(runtime.FuncForPC(personValue.Method(i).Pointer()).Name())
}
}
我想要的是这个脚本(在https://play.golang.org/p/HwvhEPfWI5I共享)打印GetName
。但是,它会打印
reflect.methodValueCall
如何让这个脚本打印*Person
's 方法的名称?