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 les résultats et les 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 renvoie deux valeurs séparées par des virgules, et nous capturons les deux valeurs à l’aide de plusieurs variables dans l’affectation.
Si vous n’avez besoin que de certaines des valeurs retournées, vous pouvez utiliser l’identifiant vide _ pour ignorer celles dont vous n’avez pas besoin :
q, _ := divide(7, 3) // ignorer le reste
fmt.Println("Quotient:", q)Utiliser _ indique à Go d’ignorer cette valeur de retour. Cela est nécessaire lorsque vous n’utilisez pas une valeur, car Go n’autorise pas les variables inutilisées.
Défi
DébutantDans ce défi, tu vas t’exercer à retourner plusieurs valeurs à partir d’une fonction en Go.
Nous avons une fonction appelée getPersonInfo qui doit retourner le nom, l’âge d’une personne et indiquer si elle est étudiante. Ta tâche consiste à compléter la fonction en ajoutant l’instruction return appropriée.
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: Retournez les trois valeurs (name, age, isStudent)
}
func main() {
// Appelez la fonction et stockez les valeurs retournées
name, age, isStudent := getPersonInfo()
// Affichez 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é-valeurEntraînez-vous par vous-même : Compilateur Go en ligne