Да, это возможно. Вы можете построить свой код как статическую библиотеку и связать его во время выполнения с помощью этой команды:
go build -buildmode=plugin
Вы можете использовать встроенный плагин так:
Символ - это указатель на переменную или функцию.
Например, плагин, определенный как
package main
import "fmt"
var V int
func F() { fmt.Printf("Hello, number %d\n", V) }
может быть загружено с помощью функции Open, а затем можно получить доступ к экспортированным символам пакета V и F
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"
type Symbol interface{}
Проверьте встроенную поддержку для Плагин в Go для получения дополнительной информации