// 建立新的二進位制檔案 package main import "github.com/dullgiulio/pingo" // 建立要匯出的物件 type MyPlugin struct{} // 匯出的方法,帶有rpc簽名 func (p *MyPlugin) SayHello(name string, msg *string) error { *msg = "Hello, " + name return nil } func main() { plugin := &MyPlugin{} // 註冊要匯出的物件 pingo.Register(plugin) // 執行主程式 pingo.Run() }使用
go build
命令編譯並生成可執行檔案:
cd plugins/hello-world
go build
package main import ( "log" "github.com/dullgiulio/pingo" ) func main() { // 從建立的可執行檔案中建立一個新外掛。通過 TCP 連線到它 p := pingo.NewPlugin("tcp", "plugins/hello-world/hello-world") // 啟動外掛 p.Start() // 使用完外掛後停止它 defer p.Stop() var resp string // 從先前建立的物件呼叫函數 if err := p.Call("MyPlugin.SayHello", "Go developer", &resp); err != nil { log.Print(err) } else { log.Print(resp) } }執行結果如下:
go run main.go
2019/12/17 18:00:20 Hello, Go developer