Golangプラグインの使い方
Go言語のプラグインを使用する手順:
- プラグインモジュールを作成する: まず、プラグインとして機能するスタンドアロンモジュールを作成する必要があります。このモジュールには、主プログラムから呼び出される関数またはメソッドのエクスポートが含まれます。プラグインモジュールで、go build -buildmode=plugin コマンドを使用してプラグインをビルドできます。
- メインプログラムへのプラグインの読み込み:メインプログラムから、`plugin.Open` 関数を使用してプラグインを読み込むことができます。この関数は、プラグインにエクスポートされた関数やメソッドにアクセスするための `*plugin.Plugin` オブジェクトを返します。
- 调用插件函数:使用plugin.Lookup函数来查找插件中的导出函数或方法。这个函数会返回一个plugin.Symbol对象,你可以将其转换为对应的函数类型进行调用。
Go言語のプラグインの使用方法を示す簡単なコード例を以下に示します。
// main.go
package main
import (
"fmt"
"plugin"
)
func main() {
// 加载插件
p, err := plugin.Open("plugin.so")
if err != nil {
fmt.Println(err)
return
}
// 查找插件中的函数
f, err := p.Lookup("Hello")
if err != nil {
fmt.Println(err)
return
}
// 转换为对应的函数类型并调用
helloFunc := f.(func())
helloFunc()
}
// plugin.go
package main
import "fmt"
// 导出的函数
func Hello() {
fmt.Println("Hello from plugin!")
}
この例では、プラグインモジュールとして plugin.go という名前のファイルを作成し、エクスポート済み関数 Hello が含まれます。その後、go build -buildmode=plugin コマンドを使用してプラグインを構築します。メインプログラムで、plugin.Open 関数を使用してプラグインをロードし、plugin.Lookup 関数を使用してプラグインの Hello 関数を検索して呼び出します。
プラグインは同じ OS とアーキテクチャでのみロードできるため、異なる OS とアーキテクチャごとに異なるプラグインをコンパイルする必要があります。