前言
在Java中我们可以在运行时使用ClassLoader动态加载jar包来实现运行时功能扩展,那么go语言中是否也存在类似机制那?go-plugin就可做这个事情,本文我们就来通过一个例子来看看,go中如何编写插件,打包插件,然后使用插件的。
go-plugin例子
编写插件
如上代码,我们编写了一个插件,需要注意的是,插件里面必须包含名称为main的包,否则在打包时候会报错:-buildmode=plugin requires exactly one main package
打包插件
在插件目录执行go build -buildmode=plugin命令即可把插件打包为.so后缀的插件。
使用插件
如上我们通过plugin.Open加载插件到内存,然后通过Lookup查找插件中的变量V和函数F(),然后设置变量V的值为7,最后调用F()函数打印变量V的值
运行上面代码,会得到如下打印输出:Hello, number 7
戳下面阅读
👇
golang并发教程 ForkJoinPool K8s网络模型
点亮再看哦👇