ggzeng
10/16/2019 - 5:14 AM

plugin usage

GO插件的使用方法

// file: plugin_a.go
package main

import "fmt"

var V int
func F() { fmt.Printf("Hello, number %d\n", V) }
// 通过下面的方法编译为 .so
// go build -buildmode=plugin 


// file: plugin_main.go
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"