Création et liaison dynamique à partir d'un binaire Go
Considérez une situation dans laquelle vous avez un binaire Go existant et devez y incorporer du code externe dynamiquement. Ceci peut être réalisé en compilant le fichier Go externe et en le liant au binaire existant.
Compilation du fichier Go externe
Une fois Go 1.5 sorti en août 2015, le support pour les bibliothèques partagées sera introduit. À l'aide de l'indicateur -buildmode=shared, vous pouvez créer le fichier Go externe en tant que bibliothèque partagée :
go install -buildmode=shared external.go
Lier le code compilé
Pour lier la bibliothèque partagée compilée au binaire existant, utilisez l'indicateur -linkshared pendant le processus de construction :
go build -linkshared main.go
Exemple Utilisation
Dans l'exemple donné, le binaire principal contiendrait le code suivant :
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 }
Cette approche vous permet d'incorporer dynamiquement de nouvelles fonctionnalités dans les binaires Go existants sans reconstruire l'intégralité programme.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!