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

Comment transmettre plusieurs valeurs de retour comme arguments à une autre fonction dans Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-31 08:49:02552parcourir

How to Pass Multiple Return Values as Arguments to Another Function in Go?

Comment utiliser les valeurs de retour d'une fonction comme arguments d'entrée pour une autre

Problème :

Considérez deux fonctions, returnIntAndString et doSomething. returnIntAndString renvoie deux valeurs, un entier et une chaîne, tandis que doSomething prend trois arguments : une chaîne, un entier et une autre chaîne.

Lors de l'appel de doSomething avec les valeurs de retour de returnIntAndString comme arguments, l'erreur suivante se produit :

main.go:45: multiple-value returnIntAndString() in single-value context
main.go:45: not enough arguments in call to doSomething()

Réponse :

Selon la spécification Go, un appel de fonction peut lier les valeurs de retour d'une autre fonction aux paramètres de la fonction appelée uniquement si :

  • Le nombre de valeurs de retour de la première fonction est égal au nombre de paramètres de la seconde function.
  • Les types des valeurs de retour sont attribuables aux types des paramètres.

Dans ce cas, returnIntAndString renvoie deux valeurs, mais doSomething nécessite un troisième argument. Par conséquent, cette invocation directe n'est pas autorisée.

Alternatives :

Il existe deux solutions alternatives :

  1. Envelopper le retour Valeurs dans une structure :

Créer une structure qui contient les valeurs de retour de returnIntAndString et transmettez une instance de cette structure à doSomething.

<code class="go">type ReturnValues struct {
    I int
    S string
}

func returnIntAndString() ReturnValues {
    return ReturnValues{42, "Hello"}
}

func doSomething(msg string, values ReturnValues) {
    // Use values.I and values.S as needed
}

doSomething("Message", returnIntAndString())</code>
  1. Attribuez des valeurs de retour à des variables séparées :

Attribuez les valeurs de retour de returnIntAndString aux variables nommées et transmettez ces variables à doSomething.

<code class="go">var i, s = returnIntAndString()
doSomething("Message", i, s)</code>

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