我有一个Go lib,它对变量数据进行并发处理,我有一个(简化的)接口:
type Handler interface {
Accepts(id []byte) bool
ProcessUnit(u []byte) []byte
}
目前,库最终开发人员(用户)可能会编写实现此接口的代码,并且库可以在最终开发人员数据结构上工作。
现在真正的问题:(允许跳过开销),是否有可能提供用另一种语言编写的接口的实现(考虑到Python)?我的目的是提供一个“插件API”,这样任何人都可以添加处理程序,例如:Python(或可能是其他语言)
我已经有了一个使用zeromq来传递go< - > python数据的工作实现,但这感觉“非自然”。我想要实现的乌托邦是一个lib用户将plugins.py
文件放在预定义的位置,并且可以在启动时自动加载插件,是否可能或者我看错了方向?
答案 0 :(得分:1)
...但是您可以使用go-python https://github.com/sbinet/go-python或goPy https://github.com/qur/gopy,这应该允许您从Go运行python解释器并且python解释器可以做动态模块加载。
,这将在Go和Python之间有些变得有点丑陋。但是应该可行。传递数据(zeromq或者直接通过包net / rpc)对我来说似乎并不“非自然”......
(旁注:如果有人可以编写正确的Python代码并获得一些帮助来理解指针,他应该能够在几天内编写Go代码。)