我在MethodByName()这里找到了一个函数调用http://golang.org/pkg/reflect/#Value.MethodByName,但这并不是我想要的!(也许是因为我不知道如何使用它……我找不到任何示例)。我想要的是:
MethodByName()
type MyStruct struct { //some feilds here } func (p *MyStruct) MyMethod { println("My statement."); } CallFunc("MyStruct", "MyMethod"); //print out "My statement."
所以我想,首先我需要类似的东西StructByName(),然后将其用于MethodByName(),对!!
StructByName()
要在对象上调用方法,请先使用reflect.ValueOf。然后按名称查找方法,然后最后调用找到的方法。例如:
reflect.ValueOf
package main import "fmt" import "reflect" type T struct {} func (t *T) Foo() { fmt.Println("foo") } func main() { var t T reflect.ValueOf(&t).MethodByName("Foo").Call([]reflect.Value{}) }