Structures de contrôle
switch
Le `switch` de Go ressemble à celui d'autres langages, avec une différence majeure : chaque `case` s'arrête automatiquement après son exécution. Pas besoin de `break`, et pas de risque d'enchaîner accidentellement sur le cas suivant.
day := "mercredi" switch day {case "samedi", "dimanche": fmt.Println("Week-end")default: fmt.Println("Jour de semaine")}// affiche "Jour de semaine"Un `case` peut regrouper plusieurs valeurs séparées par des virgules, comme ci-dessus pour "samedi" et "dimanche". Si tu as vraiment besoin de l'ancien comportement de `fallthrough` (continuer sur le cas suivant), le mot-clé `fallthrough` existe, mais il est rarement utilisé.
`switch` sans expression après le mot-clé se comporte comme un `if/else if` plus lisible : chaque `case` contient sa propre condition booléenne.
score := 82 switch {case score >= 90: fmt.Println("A")case score >= 75: fmt.Println("B")case score >= 60: fmt.Println("C")default: fmt.Println("D")}// affiche "B"Il existe aussi le "type switch" (`switch v := x.(type)`), qui teste le type dynamique d'une interface. Il sera présenté dans le module sur les interfaces, une fois que la notion aura du sens.
À toi de jouer
Écris une fonction `season(month int) string` (mois de 1 à 12) qui renvoie "hiver", "printemps", "été" ou "automne" avec un `switch` sans expression.
func season(month int) string { // à compléter}