Pingo是一個為Go程式編寫外掛程式的簡單獨立庫。由於Go本身是靜態連結的,Pingo允許外掛程式以外部進程的形式存在。它旨在簡化標準RPC包的使用,並支持TCP和Unix套接字作為通信協定。目前,Pingo還不支持遠程外掛程式,但計劃很快提供此功能。
使用Pingo創建一個外掛程式的步驟如下:
創建一個新的目錄,例如plugins/hello-world。
在該目錄下編寫main.go檔案。
在main.go中導入github.com/dullgiulio/pingo包。
創建一個要導出的對象,例如type MyPlugin struct{}。
定義一個帶有RPC簽名的導出方法,例如func (p *MyPlugin) SayHello(name string, msg *string) error。
在main函式中註冊要導出的對象並運行事件處理器,例如pingo.Register(plugin)和pingo.Run()。
編譯外掛程式:進入外掛程式目錄並執行go build。
在主程式中調用外掛程式:首先創建一個新的外掛程式實例,然後啟動外掛程式,並在使用完畢後停止它。例如,p := pingo.NewPlugin("tcp", "plugins/hello-world/hello-world"),p.Start(),並在使用完畢後用defer p.Stop()確保外掛程式停止。
調用外掛程式中的方法,例如if err := p.Call("MyPlugin.SayHello", "Go developer", &resp); err != nil。
以上步驟展示了如何使用Pingo創建一個簡單的TCP外掛程式,並通過RPC調用其方法。