Maison >développement back-end >Golang >Comment puis-je imprimer plusieurs valeurs de retour à partir d'une fonction Go à l'aide de fmt.Printf() ?
Dans Go, une fonction peut renvoyer plusieurs valeurs. Cependant, affecter directement les valeurs de retour d'une fonction à une chaîne de format dans un appel à fmt.Println() n'est pas possible par défaut.
Pour y parvenir Pour obtenir le comportement souhaité, fmt.Printf() doit être utilisé à la place de fmt.Println(). Cependant, la transmission de paramètres supplémentaires en plus de l'appel de fonction n'est pas autorisée par la spécification pour les appels de fonctions variadiques.
Pour contourner cette restriction, une fonction wrapper peut être utilisée. La fonction wrap() prend plusieurs valeurs et les renvoie sous forme de tranche de valeurs d'interface{}. Cela nous permet de transmettre les valeurs de retour de toute fonction avec au moins une valeur de retour à fmt.Printf().
package main import ( "fmt" ) // Wrapper function to convert multiple values to a slice of interface{} func wrap(vs ...interface{}) []interface{} { return vs } func main() { fmt.Printf("1: %v\n", wrap(oneInt())...) fmt.Printf("1: %v, 2: %v\n", wrap(twoInts())...) fmt.Printf("1: %v, 2: %v, 3: %v\n", wrap(threeStrings())...) } func oneInt() int { return 1 } func twoInts() (int, int) { return 1, 2 } func threeStrings() (string, string, string) { return "1", "2", "3" }
1: 1 1: 1, 2: 2 1: 1, 2: 2, 3: 3
En utilisant la fonction wrap(), il est possible de passer plusieurs valeurs de retour d'une fonction à une fonction variadique comme fmt.Printf(). Cela fournit un moyen simple et pratique de formater et d'imprimer les résultats d'un appel de fonction.
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!