Leçons du module (1/5)
if, else et déclarations d'initialisation
En Go la syntaxe if est la syntaxe classique mais avec deux différences importantes
par rapport à C/Java : pas de parenthèses autour de la condition, et le
possibilité de déclarer une variable temporaire directement dans le if
(l'instruction init).
Syntaxe de base
if temperatura > 30 {
fmt.Println("caldo")
} else if temperatura > 20 {
fmt.Println("mite")
} else {
fmt.Println("fresco")
}Les accolades sont obligatoires, même pour les blocs d'une seule ligne. Le
la condition doit être de type bool : pas de « véracité » comme Python ou JS.
n := 0
// if n { ... } // ERRORE: int non è bool
if n != 0 { ... } // okInstruction Init : portée limitée au if
Vous pouvez déclarer une variable valide uniquement à l'intérieur de if/else,
en le séparant de la condition avec ; :
if v, err := call(); err == nil {
fmt.Println("ok", v)
} else {
fmt.Println("ko", err)
}
// qui v ed err NON esistono piùC’est le modèle idiomatique pour gérer les erreurs sans polluer le périmètre extérieur.
Observation dans la portée if
Si une variable externe est "ombrée" par l'initialisation, à l'intérieur le si la version locale gagne. Juste après, l’extérieur réapparaît.
x := 10
if x := 3; x > 5 {
fmt.Println("dentro:", x) // mai stampato (3 < 5)
} else {
fmt.Println("else:", x) // 3
}
fmt.Println("dopo:", x) // 10 — quella esternaPas d'opérateur ternaire
Go n'a pas de cond ? a : b. Pour les affectations conditionnelles, vous avez besoin d'un if/else
en 3-4 lignes — c'est un choix de conception pour privilégier la lisibilité.
var label string
if age >= 18 {
label = "adulto"
} else {
label = "minore"
}Essayez-le
Imprimez 'positivo', 'zéro' ou 'negativo' en fonction de la valeur de n.
Afficher l'indice
Chaîne `if / else if / else` avec conditions sur le panneau.
Solution disponible après 3 tentatives
Utilisez l'instruction init pour déclarer v := 42 dans le if et imprimez-la uniquement si v >= 18.
Afficher l'indice
Syntaxe : `if init; condition { ... }`.
Solution disponible après 3 tentatives
Qu'imprime ce programme ?
x := 10
if x := 3; x > 5 {
fmt.Println("dentro:", x)
} else {
fmt.Println("else:", x)
}
fmt.Println("dopo:", x)Récapitulatif
- Conditions sans parenthèses, accolades toujours obligatoires.
- La condition doit être
bool: pas de véracité implicite. - Init
if v, err := f(); err == nil { ... }limite la portée deveterr. - Shadowing dans l'initialisation : veillez à ne pas ombrer les variables externes.
- Pas de ternaire : écrire un
if/elseétendu.