如何获得在Go的包中定义的实现接口的所有类型?

如何获得在Go的包中定义的实现接口的所有类型?

问题描述:

If I have the structure:

api > v1 > *.go

I would like to be able to import api.v1 and from that, reflect out any of the types defined therein that satisfy, say, http.Handler.

I have reflect of types and methods down, but I can't seem to figure out how to just inspect anything that has a package v1 declaration and extract all types defined in there. Is this impossible to do?

Thanks!

If you don't use the imported code the compiler will not include it, so I think it's impossible.

If you are running the code somehow anyway (so it is included) you might as well just have it call a register function to register itself.

Programming in Go usually doesn't include the sort of "magic" you are asking for. At first it felt limiting to me, but I got used to it after a while and now I appreciate that things are what they look like, if that makes sense.