Maison  >  Article  >  développement back-end  >  Comment transmettre plusieurs valeurs de retour comme arguments aux fonctions dans Go ?

Comment transmettre plusieurs valeurs de retour comme arguments aux fonctions dans Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-31 09:51:01216parcourir

How to Pass Multiple Return Values as Arguments to Functions in Go?

Valeurs de retour en tant qu'arguments pour des fonctions multi-arguments

Lorsque vous traitez des fonctions qui renvoient plusieurs valeurs, il est possible d'utiliser ces valeurs en entrée arguments à d’autres fonctions. Cependant, certaines limitations s'appliquent lorsque la fonction de réception a des paramètres supplémentaires.

Considérez le code suivant :

<code class="go">func returnIntAndString() (i int, s string) {...}

func doSomething(msg string, i int, s string) {...}</code>

Si nous essayons de transmettre directement les valeurs de retour de returnIntAndString() à doSomething() :

<code class="go">doSomething("message", returnIntAndString())</code>

Go se plaindra des erreurs :

multiple-value returnIntAndString() in single-value context
not enough arguments in call to doSomething()

En effet, Go ne permet de transmettre qu'une seule valeur comme argument à une fonction, même si la valeur de retour de la la fonction précédente donne plusieurs valeurs.

Pour résoudre ce problème, vous avez deux options :

  1. Attribuer des valeurs de retour :
    Attribuer le retour valeurs aux variables temporaires et transmettez-les individuellement à doSomething().

    <code class="go">i, s := returnIntAndString()
    doSomething("message", i, s)</code>
  2. Renvoyer des valeurs spécifiques :
    Dans la fonction returnIntAndString(), renvoyez un structure nommée avec des champs pour chaque valeur. Ensuite, transmettez la structure à doSomething().

    <code class="go">type Result struct {
       I int
       S string
    }
    
    func returnIntAndString() Result {...}
    
    res := returnIntAndString()
    doSomething("message", res.I, res.S)</code>

N'oubliez pas que les règles spécifiques de Go n'autorisent pas de paramètres supplémentaires à côté d'une fonction de valeur de retour à valeurs multiples lors de l'attribution d'arguments. Si les conditions spécifiques décrites dans la spécification linguistique ne sont pas remplies, vous devez utiliser l'une des solutions proposées.

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