Plugin - Выполнение функции, разработанной на языке golang в виде Plugin

Пример файла плагина на языке golang

plugin1.go

package main

import "fmt"

func FUNC_TEST(in map[string]interface{}, out *map[string]interface{} ) {
        *out = make(map[string]interface{})
        (*out)["text"] = fmt.Sprintf("Hello from Plugin %s",in["text"])
        (*out)["nds_amount"] = 12 * in["price"].(float64)
}

Скомпилируем его:

go build --buildmode=plugin plugin1.go

Скрипт запуска

output = {}
output.res,output.errText,output.errNum = Plugin("/opt/go/src/gitlab.com/com.ibcb/plugins/plugin1.so", "FUNC_TEST", { text = "123", price = 2000 })

Результат

{
        "errNum": 0,
        "errText": "",
        "res": {
                "nds_amount": 24000,
                "text": "Hello from Plugin 123"
        }
}

При изменении плагина необходимо перезагрузить приклад

systemctl restart damu