Heim >Backend-Entwicklung >Golang >Wie kann ich externen Go-Code dynamisch mit einer vorhandenen Go-Binärdatei verknüpfen?
Dynamisches Erstellen und Verknüpfen aus einer Go-Binärdatei
Stellen Sie sich eine Situation vor, in der Sie über eine vorhandene Go-Binärdatei verfügen und externen Code darin integrieren müssen dynamisch. Dies kann erreicht werden, indem die externe Go-Datei kompiliert und mit der vorhandenen Binärdatei verknüpft wird.
Externe Go-Datei kompilieren
Sobald Go 1.5 im August 2015 veröffentlicht wird, wird es unterstützt für gemeinsam genutzte Bibliotheken wird eingeführt. Mit dem Flag -buildmode=shared können Sie die externe Go-Datei als gemeinsam genutzte Bibliothek erstellen:
go install -buildmode=shared external.go
Kompilierten Code verknüpfen
Um die kompilierte gemeinsam genutzte Bibliothek zu verknüpfen Um die vorhandene Binärdatei zu verwenden, verwenden Sie während des Erstellungsprozesses das Flag -linkshared:
go build -linkshared main.go
Beispiel Verwendung
Im gegebenen Beispiel würde die Hauptbinärdatei den folgenden Code enthalten:
func main() { // Compile external package containing runFoo() pkg, err := build.Import("github.com/example/external", "", build.ImportModeShared) if err != nil { // Handle error } // Get runFoo function from compiled package runFoo := reflect.ValueOf(pkg.Func("runFoo")) // Call the compiled runFoo function runFoo.Call(nil) // Continue execution normally }
Dieser Ansatz ermöglicht es Ihnen, neue Funktionen dynamisch in vorhandene Go-Binärdateien zu integrieren, ohne das Ganze neu zu erstellen Programm.
Das obige ist der detaillierte Inhalt vonWie kann ich externen Go-Code dynamisch mit einer vorhandenen Go-Binärdatei verknüpfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!