Maison >développement back-end >Golang >Comment transmettre plusieurs valeurs de retour de fonction Go à une fonction variadique ?
Contexte :
Les fonctions Go peuvent renvoyer plusieurs valeurs, mais Les appels de fonctions variadiques standard ne permettent pas de transmettre directement ces valeurs. Cet article explore une méthode pour y parvenir à l'aide d'une fonction wrapper personnalisée.
Problème :
Considérons une fonction qui renvoie deux valeurs entières :
func temp() (int, int) { return 1, 1 }
Nous souhaitez transmettre ces valeurs de retour à la fonction variadique Printf pour les imprimer en utilisant une chaîne formatage :
fmt.Printf("first= %d and second = %d", temp()) // Error
Solution :
1. Approche directe (non prise en charge) :
La syntaxe d'appel de fonction standard ne prend pas en charge la transmission de plusieurs valeurs de retour à une fonction variadique. En effet, les paramètres variadiques doivent être les derniers paramètres d'une signature de fonction.
2. Envelopper les valeurs de retour :
Nous pouvons créer une fonction wrapper qui convertit les valeurs de retour de n'importe quelle fonction en une tranche []interface{}. La fonction variadique Printf peut alors accepter cette tranche comme arguments.
func wrap(vs ...interface{}) []interface{} { return vs }
Utilisation :
En utilisant la fonction wrap, nous pouvons maintenant transmettre les valeurs de retour de notre fonction temp à Printf :
fmt.Printf("first= %d and second = %d", wrap(temp()...)...)
Supplémentaire Notes :
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!