demo示例:
aplugin.go
package main func Add(x, y int) int { return x + y } func Subtract(x, y int) int { return x - y }
创建插件aplugin.so :
go build -buildmode=plugin -o aplugin.so aplugin.go
test.go
package main import ( "fmt" "plugin" ) var ( ProductObj *plugin.Plugin ) //编写一个"构造函数"(单例模式,懒汉模式) func new() *plugin.Plugin { if ProductObj == nil { ProductObj, _ = plugin.Open("./aplugin.so") } return ProductObj } func AddNum(x, y int) int { p := new() add, _ := p.Lookup("Add") sum := add.(func(int, int) int)(x, y) return sum } func main() { sum := AddNum(11, 2) fmt.Print(sum) }
原文:https://www.cnblogs.com/wuyepeng/p/13648071.html