是否有可能获得一些字符串,这些字符串表示实现接口的所有类型的名称,或者使用反射从特定包中的特定结构继承?
答案 0 :(得分:4)
在对reflect
软件包的文档进行一些研究后,我认为不可能。这不是反射工作的方式:接口机制不是声明性的(而是鸭型),没有这样的类型列表。
那就是说,使用ast
包来解析你的项目,得到类型列表,并检查它们是否实现了一个接口,你可能会有更多的运气,然后编写一些代码来给你所说的切片。这将为编译添加一个步骤,但可以像魅力一样工作。
答案 1 :(得分:2)
AFAIK,您无法使用reflect
执行此操作,因为软件包有点超出reflect
的范围。
你可以像godoc的静态分析一样工作。也就是说,使用code.google.com/p/go.tools/go/types
来解析包的源代码并获取类型信息。
答案 2 :(得分:2)