我正在使用go插件包,按照指南,他们说我应该使用buildmode=plugin
创建一个iso文件,输出应该具有扩展名so
。这是经验法则吗?我应该总是添加扩展吗?还是品味问题?
谢谢!
通常,插件(有时称为共享/动态库(具有取决于它们运行的平台的扩展。
对于Windows,该扩展名往往是.dll
(对于"动态链接库"(。但是,在撰写本文时,Go 不支持 Windows 插件。
对于 Linux/BSD 系统,该扩展往往是.so
的(对于"共享对象"(,这是 Go 文档建议您使用的。
按照plugin
包的文档,它看起来像这样(在 Linux 上(:
// after go build -buildmode=plugin -o plugin_name.so
p, err := plugin.Open("plugin_name.so")
if err != nil {
panic(err)
}
v, err := p.Lookup("V")
if err != nil {
panic(err)
}
f, err := p.Lookup("F")
if err != nil {
panic(err)
}
*v.(*int) = 7
f.(func())() // prints "Hello, number 7"
简而言之:使用.so
。