Maison > Article > développement back-end > Plusieurs valeurs de retour peuvent-elles être transmises comme arguments à des fonctions avec différents nombres de paramètres dans Go ?
Valeurs de retour multiples en tant qu'arguments de fonction dans Go
Dans Go, les fonctions peuvent renvoyer plusieurs valeurs, ce qui peut être bénéfique pour la structuration et la réutilisation du code . Cependant, lorsqu'il s'agit de transmettre ces valeurs de retour comme arguments à une autre fonction, certaines restrictions s'appliquent.
Limitations avec plusieurs valeurs de retour
Si vous avez une fonction returnIntAndString( ) qui renvoie deux valeurs (un entier et une chaîne), vous pouvez appeler une autre fonction doSomething(int, string) en utilisant les valeurs de retour sans aucun problème, comme :
<code class="go">doSomething(returnIntAndString())</code>
Cependant, si vous ajoutez un argument à doSomething(), comme une chaîne de message, Go se plaindra si vous l'appelez comme ceci :
<code class="go">doSomething("message", returnIntAndString())</code>
L'erreur de compilation :
Solution de contournement
La spécification Go ne permet pas de transmettre plusieurs valeurs de retour comme arguments aux fonctions avec des paramètres supplémentaires. La fonction interne doit renvoyer le nombre exact de valeurs requises pour les paramètres de la fonction externe. Si cette condition n'est pas remplie, vous devez attribuer les valeurs de retour aux variables et appeler la fonction séparément, comme :
<code class="go">code, str := returnIntAndString() doSomething("message", code, str)</code>
En conclusion, même si plusieurs valeurs de retour dans Go peuvent améliorer la réutilisabilité du code, il existe des limites en les passant comme arguments à d’autres fonctions avec un nombre de paramètres différent. Lorsque cela se produit, une affectation manuelle et un appel de fonction distinct sont nécessaires.
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!