サーチ…


前書き

Goは、実行時に他のGoコードを動的にリンクするために使用できるプラグインメカニズムを提供します。

Go 1.8以降、Linux上でのみ使用可能です。

プラグインの定義と使用

package main

import "fmt"

var V int

func F() { fmt.Printf("Hello, number %d\n", V) }

これは次のもので構築できます。

go build -buildmode=plugin

そして、アプリケーションからロードして使用します:

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"

Goの状態から2017



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow