首页  >  文章  >  后端开发  >  有没有办法以编程方式查找 Golang 中接口的所有实现?

有没有办法以编程方式查找 Golang 中接口的所有实现?

Linda Hamilton
Linda Hamilton原创
2024-11-01 06:52:02183浏览

  Is There a Way to Programmatically Find All Implementations of an Interface in Golang?

检测 Golang 中接口的所有实现

问题:

在 Golang 中,是否可以以编程方式识别所有接口实现指定接口的结构?这将允许在运行时自动初始化和终止这些结构,而无需在代码中硬编码它们的名称。

答案:

不幸的是,简短的答案是否定的。

说明:

Golang 是一种严格类型语言,这意味着链接器可以消除应用程序不使用的类型定义、方法和函数。因此,除非在代码中的某处引用和使用类型(例如 struct A),否则它不会包含在编译的二进制文件中。

此外,即使访问实现特定接口的类型的当前现有实例也是如此不可行。

替代方法:

为了实现所需的功能,另一种方法是创建一个全局映射或切片来存储实现结构的实例界面。然后,每个结构体都可以使用在应用程序启动时自动调用的 init 函数向此映射添加一个实例。然后,在必要时,应用程序可以迭代映射并在实例上调用所需的方法。

这种方法允许动态注册结构,并且无需在代码中硬编码其名称。但是,如果特定类型有多个实例,则必须实现额外的机制来管理它们的注册和注销。

以上是有没有办法以编程方式查找 Golang 中接口的所有实现?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn