登录
首页 >  Golang >  Go问答

在 Go 中开发插件?

来源:Golang技术栈

时间:2023-04-16 17:57:52 186浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《在 Go 中开发插件?》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

可以动态运行以用于基于插件的应用程序吗?

在eclipse中,我们可以创建一些Eclipse可以动态运行的插件。

在 Go 中会发生同样的事情吗?

正确答案

我会争辩说这是两个不同的问题:

  1. 有动态负载
  2. 有插件

第一个是 no :Go 程序是静态链接的,这意味着您不能将代码添加到正在运行的程序中。这也意味着您必须编译程序以使其集成插件。

幸运的是,您可以像在大多数语言中一样在 Go 中定义一个接受插件的程序,并且带有接口和快速编译的 Go 不会使这项任务变得困难。

这里有两种可能的方法:

解决方案1:插件集成在主程序中

与 Eclipse 插件类似,我们可以将“插件”集成到主程序内存中,只需重新编译程序即可。从这个意义上说,我们可以说数据库驱动程序是插件。

这可能不像在 Java 中那么简单,因为您必须重新编译并且您必须在代码的某些位置导入“插件”(查看[它是如何为数据库驱动程序完成的](https://stackoverflow.com/questions/11353679/whats- the-recommended-way-to-connect-to-mysql-from-go/11357116#11357116))但是,鉴于 Go 的目录和导入标准化,通过一个简单的 makefile 导入插件并重新编译应用程序似乎很容易处理。

鉴于 Go 中编译的简便性和速度,以及包结构的标准化,这在我看来是一个非常可行的解决方案。

解决方案 2:分离过程

在 Go 中,通信和处理异步调用特别容易。这意味着您可以基于通过命名管道(或任何网络解决方案)进行通信的许多进程来定义解决方案。请注意,Go 中有一个rpc 包。对于大多数程序来说,这可能足够有效,并且主程序将能够启动和停止插件进程。这很可能与 在 Eclipse 中所拥有的类似,并增加了内存空间保护的好处。

写了几个 Eclipse 插件的人的最后一条说明:你不想要那种混乱; 把事情简单化。

本篇关于《在 Go 中开发插件?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>