分享一个思路超简单的 Golang Go语言插件框架
https://github.com/gooo000/plugo
各位大大看看,提提意见建议~
分享一个思路超简单的 Golang Go语言插件框架
看不懂 readme 懒得看代码
。。。
看完之后就有点无语了
type 实现 plugin interface
兄弟,这就是父类跟子类的关系啊。
type 实现 plugin interface 没明白?愿闻其详,望指教
如果不考虑 windows 的情况下,为什么不选择 Plugins(go 1.8+)呢?
动态加载为何不考虑七牛的 ql 或者 lua ?
plugin interface 这种方式真的不合适。。
分享一个思路超简单的 Golang 插件框架设计思路:
在 Golang 中,实现一个插件框架可以通过接口定义和动态加载插件的方式来实现。以下是一个简单的思路:
-
定义插件接口: 首先,定义一个插件需要实现的接口。这个接口可以包含插件需要提供的所有功能。例如,可以定义一个
Plugin
接口,其中包含Run
方法,该方法将执行插件的主要功能。 -
插件实现: 每个插件都需要实现这个接口。你可以将每个插件实现为一个单独的 Go 模块或包,并通过编译生成插件的可执行文件或
.so
文件(在 Linux 上)。 -
动态加载插件: 使用 Go 的
plugin
包(在 Linux 上支持)或其他机制(如通过文件系统监控和子进程管理)来动态加载和执行插件。对于.so
文件,你可以使用plugin.Open
方法加载插件,并使用plugin.Lookup
方法查找插件中实现的接口方法。 -
插件管理: 实现一个插件管理器,负责加载、卸载和执行插件。管理器可以维护一个插件列表,并允许你动态地添加和删除插件。
-
错误处理和日志记录: 确保你的框架包含错误处理和日志记录功能,以便在插件加载或执行失败时能够捕获并处理错误。
这个框架的设计思路简单明了,通过接口定义和动态加载插件的方式,可以轻松地扩展和修改插件功能,同时保持系统的稳定性和灵活性。