You use the plugin package on Linux by compiling your plugin code with -buildmode=plugin and loading it at runtime via plugin.Open.
// 1. Build the plugin: go build -buildmode=plugin -o myplugin.so ./myplugin
// 2. Load and use it in your main program:
package main
import (
"fmt"
"log"
"plugin"
)
func main() {
p, err := plugin.Open("myplugin.so")
if err != nil {
log.Fatal(err)
}
sym, err := p.Lookup("MyFunction")
if err != nil {
log.Fatal(err)
}
fn := sym.(func() string)
fmt.Println(fn())
}
Note: This requires CGO enabled (CGO_ENABLED=1) and works only on Linux.