Le mot-clé `fallthrough`
Fait partie de la section Fondamentaux du Journey GO de Coddy — leçon 42 sur 109.
En Go, le mot-clé fallthrough nous permet de continuer l'exécution vers le cas suivant dans une instruction switch, même après qu'une correspondance a été trouvée. Explorons comment cela fonctionne.
Tout d'abord, créons une instruction switch simple qui utilise le mot-clé fallthrough pour décrire un nombre :
num := 15
switch {
case num < 20:
fmt.Print("Less than 20 ")
fallthrough
case num > 10:
fmt.Print("Greater than 10 ")
fallthrough
case num > 0:
fmt.Print("Positive number")
}Après l'exécution de ce code, nous verrons les trois messages affichés à l'écran :
Less than 20 Greater than 10 Positive numberCela se produit parce que le premier cas correspond (15 est inférieur à 20), et le mot-clé fallthrough force Go à exécuter également le deuxième cas. Ensuite, le deuxième cas utilise également fallthrough, ce qui oblige Go à exécuter également le troisième cas. Sans fallthrough, seul le premier cas correspondant s'exécuterait.
N'oubliez pas que fallthrough exécutera le cas suivant peu importe si sa condition est vraie ou non. Dans notre exemple, toutes les conditions se trouvent être vraies pour le nombre 15, mais le cas suivant s'exécuterait même si sa condition était fausse.
Défi
DébutantDans ce défi, vous allez vous entraîner à utiliser le mot-clé fallthrough dans une instruction switch. Le mot-clé fallthrough permet à l'exécution de continuer vers le cas suivant même après qu'une correspondance a été trouvée.
Vous avez une variable représentant un jour de la semaine. Votre tâche consiste à ajouter le mot-clé fallthrough à l'endroit approprié pour que le programme affiche à la fois 'It's a weekday!' et 'Time to work!' lorsque le jour est 'Monday'.
Aide-mémoire
Le mot-clé fallthrough permet à l'exécution de continuer vers le cas suivant dans une instruction switch, même après qu'une correspondance a été trouvée :
num := 15
switch {
case num < 20:
fmt.Print("Less than 20 ")
fallthrough
case num > 10:
fmt.Print("Greater than 10 ")
fallthrough
case num > 0:
fmt.Print("Positive number")
}Cela affichera : Less than 20 Greater than 10 Positive number
fallthrough exécute le cas suivant peu importe si sa condition est vraie ou fausse.
Essayez vous-même
package main
import "fmt"
func main() {
// Une variable représentant un jour de la semaine
day := "Monday"
// Instruction switch pour vérifier le jour
switch day {
case "Monday":
fmt.Println("It's a weekday!")
// TODO: Ajouter le mot-clé fallthrough ici pour continuer au cas suivant
case "Tuesday", "Wednesday", "Thursday", "Friday":
fmt.Println("Time to work!")
case "Saturday", "Sunday":
fmt.Println("It's the weekend!")
default:
fmt.Println("Invalid day!")
}
}
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