goplugin功能
Go Plugin插件(so动态库)
1: 官方实现
- golang 1.8 及以上版本提供了一个创建共享库(shared object)的新工具,称为 Plugins。
- 目前 Plugins 仅在 Linux、FreeBSD 和 macOS 上受支持,且只支持 golang 调用。
2: 使用示例,定义一个 plugin.go
|
|
- 使用 -buildmode=plugin 模式编译出 plugin.so 共享库;
go build -o plugin.so -buildmode=plugin plugin.go
3: main.go 中调用插件(共享库)
|
|
4:定义一个插件共享库总结:
|
|
5:Traefik Yaegi 实现
- yaegi 是一个 go 解释器;
- https://github.com/traefik/yaegi
- Yaegi 运行在 Go 运行时之上,可以直接作为嵌入式解释器,或使用交互式 shell ,解释运行 Go 代码
5.1 代码结构
- 这里有个注意点,Yaegi 的插件需要放在 src 目录下;
|
|
5.2 hello.go
|
|
5.3 main.go
|
|