updogliu
updogliu

Reputation: 6255

How to list out the method name in an interface type?

For example,

type FooService interface {
    Foo1(x int) int
    Foo2(x string) string
}

What I am attempting to do is getting list ["Foo1", "Foo2"] using runtime reflection.

Upvotes: 8

Views: 3983

Answers (1)

Thundercat
Thundercat

Reputation: 120941

Try this:

t := reflect.TypeOf((*FooService)(nil)).Elem()
var s []string
for i := 0; i < t.NumMethod(); i++ {
    s = append(s, t.Method(i).Name)
}

playground example

Getting the reflect.Type for the interface type is the tricky part. See How to get the reflect.Type of an interface? for an explanation.

Upvotes: 7

Related Questions