実行時に特定のパッケージをロードすることは可能ですか?各プラグインが他のプラグインと同じ機能を持ちますが、動作が異なり、構成ファイルに応じていずれかをロードするプラグインが必要です。
新しいプログラムを(たとえば、一時ディレクトリに)書き出し、 exec.Command で実行することにより、実行時に「プラグイン」パッケージを実行することを検討できます、exec.Command("go", "run", files…).Run()
の線に沿ったもの
同様のコードがいくつか表示されます こちら 。
いいえ、Goは動的にロードされるライブラリをサポートしていません。
最善の方法は、プラグインを独自の実行可能ファイルとして起動し、ソケットまたはstdin/stdoutを介してプラグインと通信することです。
2017 update
この答えはもはや真実ではなく、Goは plugins をサポートするようになりました。
Go 1.8の時点で、これに対するサポートがあります。
これらを行うだけで、構成を読み取るcodegenを作成し、パッケージが順番にロードされた基本的なgoファイルを生成して実行します。コンパイル言語は動的なロードも提供しません。ファイルは、ソケットまたはhttpとロードして通信するために必要なコードを含む一時ファイルを作成します