Logo marque du langage Go

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 billet va présenter.

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 :

  • Déclarer des fonctions avec plusieurs valeurs de retours ;
  • A effectuer l’appel de la fonction ;
  • A récupérer tout ou partie des résultats de la fonctions.

A lire aussi …

Frédéric Schmidt

Lead Technical Architect.

Ajouer un commentaire

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Recent Comments

    %d blogueurs aiment cette page :