猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
在Go中开发插件?
可以动态运行以便用于基于插件的应用程序吗?
在eclipse中,我们可以创建Eclipse可以动态运行的一些插件。
Go中可能有同样的事情吗?
慕妹3242003
浏览 213
回答 3
3回答
Smart猫小萌
我认为这是两个独立的问题:具有动态负载有插件第一个完全不是:Go程序是静态链接的,这意味着您无法将代码添加到正在运行的程序中。这也意味着您必须编译该程序以使其集成插件。幸运的是,您可以像大多数语言一样在Go中定义一个接受插件的程序,而Go具有接口和快速编译功能并不会使这项任务变得困难。这是两种可能的方法:解决方案1:插件集成在主程序中与Eclipse插件类似,我们可以通过简单地重新编译程序将“插件”集成到主程序存储器中。从这个意义上说,我们可以说数据库驱动程序是插件。这可能不像Java那样简单,因为您必须重新编译,并且必须在代码的某个点上导入“插件”(请参见数据库驱动程序的完成方式),但是考虑到Go在目录和导入方面的标准化,使用简单的makefile导入插件并重新编译应用程序似乎很容易解决。鉴于Go中编译的简便性和速度以及包结构的标准化,在我看来这是一个非常可行的解决方案。解决方案2:分开的过程在Go中进行通信和处理异步调用特别容易。这意味着您可以基于通过命名管道进行通信的许多过程来定义解决方案(或任何网络解决方案)。请注意,Go中有一个rpc软件包。对于大多数程序而言,这可能足够有效,并且主程序将能够启动和停止插件进程。这很可能感觉与您在Eclipse中所拥有的类似,并且具有存储空间保护的额外好处。编写了多个Eclipse插件的人的最后一封信:把事情简单化。
0
0
0
大话西游666
不可能在运行时加载软件包。在将来(或今天有局限性),可能有与项目类似的功能go-eval,这是“ Go的解释器的开始”。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Go
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续