Maison > développement back-end > Golang > le corps du texte

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

Mary-Kate Olsen
Libérer: 2024-10-31 09:51:01
original
223 Les gens l'ont consulté

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>
Copier après la connexion

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

<code class="go">doSomething("message", returnIntAndString())</code>
Copier après la connexion

Go se plaindra des erreurs :

multiple-value returnIntAndString() in single-value context
not enough arguments in call to doSomething()
Copier après la connexion

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>
    Copier après la connexion
  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>
    Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!