首页 > 文章列表 > 查找结构名称以实现接口或继承的方式

查找结构名称以实现接口或继承的方式

174 2024-02-19
问题内容

是否可以使用反射获取表示实现接口或从特定包中的特定结构继承的所有类型名称的字符串切片?


正确答案


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

也就是说,您可能会更幸运地使用 ast 包来解析您的项目,获取类型列表,并检查它们是否实现接口,然后编写一些代码来为您提供上述切片。这会增加编译步骤,但效果却很不错。