"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-23
Parcourir:660

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 :

func returnIntAndString() (i int, s string) {...}
func doSomething(i int, s string) {...}

doSomething(returnIntAndString())

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

func doSomething(msg string, i int, s string) {...}
doSomething("message", returnIntAndString()) // Error

Le message d'erreur indique que vous ne pouvez pas transmettre plusieurs valeurs de retour à une fonction attendant 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 exactement le 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 disposez de 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 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 :
func doSomethingVariadic(msg string, args ...interface{}) {
  // Code to handle variable number of arguments
}

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

doSomethingVariadic("message", returnIntAndString())
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3