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

Comment transmettre plusieurs valeurs de retour d'une fonction à une autre en Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-01 03:23:27887parcourir

How to Pass Multiple Return Values from One Function to Another in Go?

Passer les valeurs de retour d'une fonction en tant qu'entrées à une autre fonction

Dans Go, vous pouvez facilement transmettre les valeurs de retour d'une fonction en tant qu'arguments d'entrée à une autre fonction. Par exemple :

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

doSomething(returnIntAndString())</code>

Cependant, des complications surviennent lorsque vous ajoutez un argument supplémentaire à la deuxième fonction :

<code class="go">func doSomething(msg string, i int, s string) {...}
doSomething("message", returnIntAndString()) // Error</code>

Le message d'erreur indique que vous ne pouvez pas transmettre plusieurs valeurs de retour à une fonction attend un seul argument.

Solution

Selon la spécification Go, une fonction ne peut transmettre ses valeurs de retour comme arguments d'entrée à une autre fonction que si cette dernière attend l'exact même nombre d'arguments. Il n'existe aucun mécanisme pour transmettre des paramètres supplémentaires dans ce scénario.

Par conséquent, pour résoudre le problème, vous avez deux options :

  1. Attribuer des valeurs de retour à des variables séparées : Attribuez les valeurs de retour de returnIntAndString() à des variables individuelles et transmettez-les comme arguments à doSomething().
  2. Utilisez une fonction qui accepte les arguments variadiques : Si vous devez transmettre des arguments supplémentaires , vous pouvez définir une fonction qui accepte les arguments variadiques, comme le montre l'exemple ci-dessous :
<code class="go">func doSomethingVariadic(msg string, args ...interface{}) {
  // Code to handle variable number of arguments
}</code>

Vous pouvez ensuite appeler cette fonction avec les arguments souhaités, y compris les valeurs de retour de returnIntAndString() :

<code class="go">doSomethingVariadic("message", returnIntAndString())</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