Switch en français
Introduction au Switch en Go
Dans le langage Go, l'instruction switch permet d'exécuter de manière conditionnelle l'un des multiples blocs de code selon la valeur d'une expression. On peut considérer cela comme une extension de l'instruction if...else, avec une plus grande capacité à gérer des situations multiples.
Syntaxe de base du Switch
Il existe plusieurs syntaxes possibles pour l'instruction switch. La forme la plus courante est :
switch {
case :
case :
.
.
.
case :
default:
}
Lorsque l' correspond à la valeur de l'une des instructions case, le bloc d' correspondant est exécuté. Si aucune valeur ne correspond, alors le bloc default optionnel est exécuté. Si le bloc default est omis et qu'aucune valeur n'est en correspondance, aucun bloc d'instructions ne s'exécute.
Particularités de Go
Contrairement à d'autres langages comme C++ ou Java, dans Go, les valeurs des instructions case ne sont pas uniquement limitées à des constantes. Vous pouvez également utiliser des variables ou des expressions complètes. De plus, Go n’a pas besoin d’une instruction ‘break’ car une fois qu’un bloc correspondant est atteint, l'exécution suit automatiquement le code après l'instruction switch.
Utilisation d'une expression simple
Il est également possible de ne pas spécifier d' après le switch, donnant ainsi un comportement similaire à des expressions dans une structure if...else :
switch {
case :
case :
.
.
.
case :
default:
}
Ici, la première expression qui évalue à vrai déclenchera son bloc d'. Le bloc default reste toujours optionnel.
Cas avec plusieurs valeurs
Dans chaque case, il est possible d’indiquer plusieurs valeurs ou expressions, séparées par des virgules :
switch {
case , , ... :
default:
}
Les valeurs sont comparées de gauche à droite et de haut en bas. Le premier bloc case qui correspond à l'expression du switch sera exécuté.
Exemple pratique
Voici un exemple où une variable i est déclarée et utilisée dans une expression switch pour déterminer si le nombre est pair ou impair :
package main
import "fmt"
func main() {
i := 7
switch i % 2 {
case 0:
fmt.Printf("%d est pair.
", i)
case 1:
fmt.Printf("%d est impair.
", i)
}
}
// Sortie : 7 est impair.