fooType := reflect.TypeOf(Foo{})
for i := 0; i < fooType.NumMethod(); i++ {
method := fooType.Method(i)
fmt.Println(method.Name)
}
考虑到这一点,如果要检查类型是否实现某个方法集,则可能会发现使用接口和类型断言更为容易.例如:
func implementsBar(v interface{}) bool {
type Barer interface {
Bar() string
}
_,ok := v.(Barer)
return ok
}
...
fmt.Println("Foo implements the Bar method:",implementsBar(Foo{}))
或者如果你只想要一个编译时断言一个特定类型的方法,你可以简单地包括以下某个地方:
var _ Barer = Foo{}