【发布时间】:2019-09-10 00:27:04
【问题描述】:
我正在构建一个库,一旦将方法添加到结构中,我们希望使用某种方法列表自动调用它们而无需使用。
我想通过调用此处链接到How to dump methods of structs in Golang? 的所有转储方法来构建这里的工作。
package main
import (
"fmt"
"reflect"
)
type Foo struct {
Prop string
}
func (f Foo) Bar(i int) {
fmt.Println("Called from Foo.Bar()")
}
func (f Foo) Baz(i int) {
fmt.Println("Called from Foo.Baz()")
}
func (f Foo) Floop(i int) {
fmt.Println("Called from Foo.Floop()")
}
func main() {
fooType := reflect.TypeOf(&Foo{})
fmt.Println("--- Calling methods ---")
for i := 0; i < fooType.NumMethod(); i++ {
method := fooType.Method(i)
method.Func.Call(nil)
}
}
也可以在这里看到:https://play.golang.org/p/gNUsANjuPV0
这总是会因为 .Call() 的参数太少而出现恐慌。我看不出这与此处的代码在结构上有何不同:https://play.golang.org/p/HB8yB91LRme。
【问题讨论】:
-
提示 1:在链接的示例中,该方法没有参数,但在“调用”中提供了一个参数。提示 2:请参阅“呼叫”的文档。
标签: go reflection