获取实现接口或继承结构的结构的名称

时间:2014-08-06 12:31:48

标签: go

是否有可能获得一些字符串,这些字符串表示实现接口的所有类型的名称,或者使用反射从特定包中的特定结构继承?

3 个答案:

答案 0 :(得分:4)

在对reflect软件包的文档进行一些研究后,我认为不可能。这不是反射工作的方式:接口机制不是声明性的(而是鸭型),没有这样的类型列表。

那就是说,使用ast包来解析你的项目,得到类型列表,并检查它们是否实现了一个接口,你可能会有更多的运气,然后编写一些代码来给你所说的切片。这将为编译添加一个步骤,但可以像魅力一样工作。

答案 1 :(得分:2)

AFAIK,您无法使用reflect执行此操作,因为软件包有点超出reflect的范围。

你可以像godoc的静态分析一样工作。也就是说,使用code.google.com/p/go.tools/go/types来解析包的源代码并获取类型信息。

答案 2 :(得分:2)