分享一个思路超简单的 Golang Go语言插件框架

https://github.com/gooo000/plugo

各位大大看看,提提意见建议~


分享一个思路超简单的 Golang Go语言插件框架
6 回复

自己先顶下,star 之~

更多关于分享一个思路超简单的 Golang Go语言插件框架的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


看不懂 readme 懒得看代码

。。。
看完之后就有点无语了
type 实现 plugin interface

兄弟,这就是父类跟子类的关系啊。

type 实现 plugin interface 没明白?愿闻其详,望指教

如果不考虑 windows 的情况下,为什么不选择 Plugins(go 1.8+)呢?

动态加载为何不考虑七牛的 ql 或者 lua ?

plugin interface 这种方式真的不合适。。

分享一个思路超简单的 Golang 插件框架设计思路:

在 Golang 中,实现一个插件框架可以通过接口定义和动态加载插件的方式来实现。以下是一个简单的思路:

  1. 定义插件接口: 首先,定义一个插件需要实现的接口。这个接口可以包含插件需要提供的所有功能。例如,可以定义一个 Plugin 接口,其中包含 Run 方法,该方法将执行插件的主要功能。

  2. 插件实现: 每个插件都需要实现这个接口。你可以将每个插件实现为一个单独的 Go 模块或包,并通过编译生成插件的可执行文件或 .so 文件(在 Linux 上)。

  3. 动态加载插件: 使用 Go 的 plugin 包(在 Linux 上支持)或其他机制(如通过文件系统监控和子进程管理)来动态加载和执行插件。对于 .so 文件,你可以使用 plugin.Open 方法加载插件,并使用 plugin.Lookup 方法查找插件中实现的接口方法。

  4. 插件管理: 实现一个插件管理器,负责加载、卸载和执行插件。管理器可以维护一个插件列表,并允许你动态地添加和删除插件。

  5. 错误处理和日志记录: 确保你的框架包含错误处理和日志记录功能,以便在插件加载或执行失败时能够捕获并处理错误。

这个框架的设计思路简单明了,通过接口定义和动态加载插件的方式,可以轻松地扩展和修改插件功能,同时保持系统的稳定性和灵活性。

回到顶部