Passer les valeurs de retour d'une fonction en tant qu'entrées à une autre fonction
Dans Go, vous pouvez facilement transmettre les valeurs de retour d'une fonction en tant qu'arguments d'entrée à une autre fonction. Par exemple :
<code class="go">func returnIntAndString() (i int, s string) {...} func doSomething(i int, s string) {...} doSomething(returnIntAndString())</code>
Cependant, des complications surviennent lorsque vous ajoutez un argument supplémentaire à la deuxième fonction :
<code class="go">func doSomething(msg string, i int, s string) {...} doSomething("message", returnIntAndString()) // Error</code>
Le message d'erreur indique que vous ne pouvez pas transmettre plusieurs valeurs de retour à une fonction attend un seul argument.
Solution
Selon la spécification Go, une fonction ne peut transmettre ses valeurs de retour comme arguments d'entrée à une autre fonction que si cette dernière attend l'exact même nombre d'arguments. Il n'existe aucun mécanisme pour transmettre des paramètres supplémentaires dans ce scénario.
Par conséquent, pour résoudre le problème, vous avez deux options :
<code class="go">func doSomethingVariadic(msg string, args ...interface{}) { // Code to handle variable number of arguments }</code>
Vous pouvez ensuite appeler cette fonction avec les arguments souhaités, y compris les valeurs de retour de returnIntAndString() :
<code class="go">doSomethingVariadic("message", returnIntAndString())</code>
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!