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 :
func returnIntAndString() (i int, s string) {...}
func doSomething(i int, s string) {...}
doSomething(returnIntAndString())
Cependant, des complications surviennent lorsque vous ajoutez un argument supplémentaire à la deuxième fonction :
func doSomething(msg string, i int, s string) {...}
doSomething("message", returnIntAndString()) // Error
Le message d'erreur indique que vous ne pouvez pas transmettre plusieurs valeurs de retour à une fonction attendant 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 exactement le 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 disposez de deux options :
func doSomethingVariadic(msg string, args ...interface{}) {
// Code to handle variable number of arguments
}
Vous pouvez ensuite appeler cette fonction avec les arguments souhaités, y compris les valeurs de retour de returnIntAndString() :
doSomethingVariadic("message", returnIntAndString())
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3