Go提供了一種插件機(jī)制,可用于在運(yùn)行時(shí)動(dòng)態(tài)鏈接其他Go代碼。在Go1.8中,僅支持Linux。
定義和使用插件
package main
import "fmt"
var V int
func F() { fmt.Printf("Hello, number %d\n", V) }
使用以下命令build:
$ go build -buildmode=plugin
在你的程序中加載并使用:
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())() // 打印 "Hello, number 7"