第一步 开发插件
- 必须包含main包
- 编译命令:go build -buildmode=plugin -o greeter.so greeter.go
package main
import "fmt"
type greeting string
func (g greeting) Greet() {
fmt.Println("hello world")
}
var Greeter greeting
第二步 主程序 使用插件
package main
import (
"fmt"
"os"
"plugin"
)
type Greeter interface {
Greet()
}
func main() {
plug, err := plugin.Open("./greet/greeter.so")
if err != nil {
fmt.Println(err)
os.Exit(1)
}
symGreeter, err := plug.Lookup("Greeter")
if err != nil {
fmt.Println(err)
os.Exit(1)
}
var greeter Greeter
greeter, ok := symGreeter.(Greeter)
if !ok {
fmt.Println(err)
os.Exit(1)
}
greeter.Greet()
}