Définition
Après avoir présenté : les fonctions, ses différentes syntaxes, la manière de les appeler. Nous allons nous concentrer sur les retours de ces fonctions.
Le langage GO, nous permet de faire des retours multiples de résultats pour une fonction.
Rappel Syntaxe d’une fonction
func <FunctionName>(<Param1> type, <Param2> type, ...) <TypeRetour> {
// Implémentation
}
Rappel: En ce qui concerne la visibilité d’une fonction, en ce sens on parle public ou privée. Il suffit pour cela de soit mettre la première lettre en minuscule pour une fonction privée et une majuscule pour une fonction publique.
Les retours de fonction
Par définition, une fonction ne peut que retourner qu’un seul et unique résultat. Quelque soit sont type de base ou de type Struct.
Mais les créateurs de GO on donnait la possibilité aux fonctions de retourner plusieurs résultats. Et de type différents en même temps. C’est ce qui fait la force et qui est une feature essentielle dans ce langage.
Syntaxe
Voilà, la syntaxe d’une fonction qui retourne deux résultats :
func <FunctionName>(<Param1> type, <Param2> type, ...) <Type1>, <Type2> {
// Implémentation
return <valeur1>, <valeur2>
}
Exemple
Voici un simple exemple d’appel et de déclaration d’une fonction. Il va retourner un ensemble de type chaine de caractère et un entier.
package main import "fmt" func main() { var name string = "John Doe" message, longeur := message(name) fmt.Printf("Voici un message:%s, le nom fait %d caractères. \n", message, longeur) } func message(nom string) (string, int) { return fmt.Sprintf("Hello dear %s.", nom), len(nom) }
Syntaxe complémentaire
Il se peut que dans certains cas, nous n’aillons pas besoin d’une ou plusieurs valeur(s) dans l’ensemble des valeurs retournées.. Il existe une syntaxe ou plutôt un symbole qui évitera de faire une affectation qui ne servira à rien.
La déclaration de la fonction ne change absolument pas, c’est dans la récupération des valeurs lors de l’appel. Comme on peut le le voir sur la ligne 9 de l’exemple, on emploie le caractère de soulignement _. Celui si signifie que l’on a pas besoin de ce résultat provenant de la fonction.
Exemple
Reprenons l’exemple précédent
package main import "fmt" func main() { var name string = "John Doe" message, _:= message(name) fmt.Printf("Voici un message:%s. \n", message) } func message(nom string) (string, int) { return fmt.Sprintf("Hello dear %s", nom), len(nom) }
Utilisation dans GO
En regardant certains packages natifs au langage GO on remarquera, que la majorité des appels de fonctions retournent un couple. Ce couple est le résultat et éventuellement un objet erreur si une erreur c’est produite dans la fonction.
En résumé
Voilà maintenant vous savez :

A lire aussi …
Série : Langage GO – les Slices
Les slices sont des portions de taille dynamique d’un tableau sous-jacent….
Série : Langage GO – Tableaux
Les fonctions en langage GO permettent de faire des retours multiples de résultats. C’est que ce bi…
Série : Langage GO – Retour de fonction
Les fonctions en langage GO permettent de faire des retours multiples de résultats. C’est que ce bi…
Série : Langage GO – Les fonctions
Présentation de la notion de fonction avec ou sans paramètres d’entrées et ou de sorties….
Série : Langage GO – Les conversions
Présentation des différentes conversions entre les types du le langage GO….
Ajouer un commentaire