Une tâche courante lorsque l'on travaille avec plusieurs langages dans un projet est la possibilité d'invoquer des fonctions d'un langage dans un autre. Dans ce cas, nous explorons comment appeler une fonction Python à partir d'un programme Go et récupérer sa valeur de retour.
Dans une première tentative, le code Go suivant était used :
package main import ( "fmt" "os/exec" ) func main() { cmd := exec.Command("python", "-c", fmt.Sprintf("'import pythonfile; print pythonfile.cat_strings(\"%s\", \"%s\")'", "foo", "bar")) out, err := cmd.CombinedOutput() if err != nil { fmt.Println(err) return } fmt.Println(string(out)) }
Cependant, cette approche a rencontré un problème où la valeur de retour de la fonction Python n'était pas capturée dans le programme Go. La sortie affichait une chaîne vide, " ".
Le problème est survenu en raison de la façon dont la commande Python a été formatée. Les guillemets entourant la commande elle-même conduisaient l'interpréteur Python à traiter la commande comme une seule chaîne au lieu d'une liste d'arguments.
Pour résoudre le problème, les guillemets entourant la commande étaient supprimé. Le code Go suivant illustre la solution :
package main import ( "fmt" "os/exec" ) func main() { cmd := exec.Command("python", "-c", "import pythonfile; print pythonfile.cat_strings('foo', 'bar')") out, err := cmd.CombinedOutput() if err != nil { fmt.Println(err) return } fmt.Println(string(out)) }
En supprimant les guillemets, la commande est maintenant exécutée comme prévu et la valeur de retour de la fonction Python peut être correctement capturée dans le programme Go.
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!