Maison >développement back-end >Golang >Comment transmettre plusieurs valeurs de retour de fonction Go à une fonction variadique ?

Comment transmettre plusieurs valeurs de retour de fonction Go à une fonction variadique ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-09 08:55:061034parcourir

How to Pass Multiple Go Function Return Values to a Variadic Function?

Comment transmettre plusieurs valeurs de retour à une fonction variadique dans Go ?

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 :

  • Cette technique peut être utilisée pour transmettre plusieurs valeurs de retour à n'importe quelle fonction variadique dans Go.
  • La fonction fmt.Println peut également être utilisée pour imprimer plusieurs retours valeurs directement, mais il ne prend pas en charge le formatage des chaînes.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn