Last-Paket dynamisch
Ist es möglich zum laden einer bestimmten Paket während der Laufzeit?
Ich möchte eine Art von plugins, wo jeder hat die gleichen Funktionen als die anderen, aber mit unterschiedlichem Verhalten, und je nach Konfiguration-Datei, laden Sie eine oder andere.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie die Ausführung der 'plugin' - Pakete zur Laufzeit, indem ein neues Programm (sagen wir, um ein temp-Verzeichnis) und ausführen über exec.Befehl, etwas entlang der Linien von
exec.Command("go", "run", files…).Run()
Sehen Sie einige ähnliche code hier.
Nein, Gehen Sie nicht unterstützt werden dynamisch geladene Bibliotheken.
Ihre beste Wette ist, starten Sie das plugin als eigene ausführbare Datei und mit ihm kommunizieren über sockets oder über stdin/stdout.
2017 update
Diese Antwort stimmt nicht mehr, jetzt Gehen unterstützt plugins.
The plugin support is currently incomplete, only supports Linux, and has known bugs. Please report any issues.
Gibt es Unterstützung für diese jetzt, da der 1.8 gehen
https://golang.org/pkg/plugin/
Nur diese,erstellen Sie ein codegen, die liest die Konfiguration, generiert einen basic-go-Datei, mit der Pakete in Reihenfolge geladen und dann ausgeführt werden soll, kompilieren Sie Sprachen nicht noch eine dynamische Belastung, auch dart leidet, in einer Art und Weise,einfach nur Lesen Ihre Konfigurationsdatei erstellen Sie dann eine temporäre Datei mit den notwendigen codes zu laden und die Kommunikation mit sockets oder http
Ich denke was du suchst ist die Besondere Funktion
init
wenn Sie fügen Sie eine
in einem Paket laufen wird es das erste mal, das Paket wird importiert.
Dies geschieht nur in der gleichen binary. Wie die anderen schon gesagt haben gehen Sie nicht unterstützt werden dynamisch geladene Bibliotheken.