Retourner plusieurs valeurs
Fait partie de la section Fondamentaux du Journey GO de Coddy — leçon 56 sur 109.
Les fonctions Go peuvent retourner plusieurs valeurs à la fois, ce qui est extrêmement utile pour retourner à la fois des résultats et des informations d'erreur.
Créez une fonction qui renvoie à la fois un quotient et un reste :
func divide(a, b int) (int, int) {
quotient := a / b
remainder := a % b
return quotient, remainder
}
func main() {
q, r := divide(7, 3)
fmt.Println("7 ÷ 3 =", q, "with remainder", r)
}Lorsque vous exécutez ce programme, il affiche :
7 ÷ 3 = 2 with remainder 1La fonction retourne deux valeurs séparées par des virgules, et nous capturons les deux valeurs en utilisant plusieurs variables lors de l'affectation.
Si vous n'avez besoin que de l'une des valeurs retournées, vous pouvez utiliser l'identificateur blanc _ pour ignorer l'autre. Par exemple, pour obtenir uniquement le quotient :
q, _ := divide(7, 3)
fmt.Println("Quotient:", q)L'_ ignore le reste afin que le compilateur ne signale pas d'erreur pour une variable inutilisée.
Défi
DébutantDans ce défi, vous allez vous entraîner à retourner plusieurs valeurs depuis une fonction en Go.
Nous avons une fonction appelée getPersonInfo qui doit retourner le nom, l'âge et si la personne est étudiante. Votre tâche consiste à compléter la fonction en ajoutant l'instruction de retour appropriée.
Aide-mémoire
Les fonctions Go peuvent retourner plusieurs valeurs à la fois. Spécifiez plusieurs types de retour entre parenthèses et retournez plusieurs valeurs séparées par des virgules :
func divide(a, b int) (int, int) {
quotient := a / b
remainder := a % b
return quotient, remainder
}Capturez plusieurs valeurs de retour en utilisant plusieurs variables lors de l'affectation :
q, r := divide(7, 3)Essayez vous-même
package main
import "fmt"
// Cette fonction doit retourner trois valeurs : name, age, et isStudent
func getPersonInfo() (string, int, bool) {
// Les variables sont déjà définies pour vous
name := "Alex"
age := 25
isStudent := true
// TODO: Retourner les trois valeurs (name, age, isStudent)
}
func main() {
// Appeler la fonction et stocker les valeurs retournées
name, age, isStudent := getPersonInfo()
// Afficher les valeurs
fmt.Printf("Name: %s\n", name)
fmt.Printf("Age: %d\n", age)
fmt.Printf("Is Student: %t\n", isStudent)
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
4Opérateurs de comparaison et logiques
Opérateurs de comparaison - Partie 1Opérateurs de comparaison - Partie 2Opérateur logique ANDOpérateur logique OROpérateur logique NOTBases de la priorité des opérateursRécapitulatif - Effectuer des comparaisons7Structures de contrôle : Les boucles
Explication de la boucle `for`Boucle For - Les basesBoucle For - Condition uniquementLe mot-clé `break`Le mot-clé `continue`Boucles imbriquéesRécapitulatif - Répéter des actions2Variables et types de données de base
Qu'est-ce qu'une variableInférence de type avec `:=` Entiers (int)Nombres à virgule flottanteBooléensChaînes de caractères (Strings)Valeurs zéroConstantesConventions de nommageRécapitulatif - Variables et types5Entrées/Sorties de base
Sortie formatéeVerbes de formatageAffichage des typesSaisie utilisateur de baseRécapitulatif - Entrées et Sorties8Fonctions
Comprendre les fonctionsDéclarer une fonctionAppeler des fonctionsParamètres de fonctionRetourner une valeur uniqueRetourner plusieurs valeursValeurs de retour nomméesBases de la portée des fonctionsRécapitulatif - Créer du code réutilisable11Types composites : Slices
Introduction aux SlicesDéclaration de littéraux de SlicesCréation de Slices avec `make`Longueur vs Capacité des SlicesAccès aux éléments d'un SliceAjout d'élémentsDécoupage de Slices/Tableaux existantsItération sur les SlicesCopie de SlicesRécapitulatif - Listes dynamiques3Opérateurs de base
Opérateurs arithmétiquesOpérateur de divisionL'opérateur moduloOpérateur d'affectationOpérateurs d'affectation augmentéeIncrémentation et décrémentationRécapitulatif - Calculs6Structure de contrôle : Les conditionnelles
L'instruction `if`Le mot-clé `else`Le mot-clé `else if`Masquage de variable dans `if`Initialisation des variablesL'instruction `switch``switch` avec expressions`switch` sans expressionLe mot-clé `fallthrough`Récapitulatif - Prendre des décisions9Pointeurs
Qu'est-ce qu'un pointeur ?Déclaration de variables pointeursL'opérateur d'adresseDéréférencement de pointeursUtiliser des pointeurs dans les fonctionsPointeurs NilRécapitulatif - Comprendre les pointeurs12Types composites : Maps
Introduction aux MapsDéclaration de littéraux de MapCréation de Maps avec `make`Ajout et mise à jour de paires clé-valeurAccès aux valeurs d'une MapVérification de l'existence d'une cléSuppression d'entrées de MapTaille d'une MapItération sur les MapsRécapitulatif - Stockage clé-valeur