Passer au contenu principal
eLearner.app
Module 2 · Leçon 1 sur 56/50 dans le cours~10 min
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

Go
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.

Go
n := 0
// if n { ... }   // ERRORE: int non è bool
if n != 0 { ... }  // ok

Instruction 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 ; :

Go
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.

Go
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 esterna

Pas 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é.

Go
var label string
if age >= 18 {
    label = "adulto"
} else {
    label = "minore"
}

Essayez-le

Exercice#go.m2.l1.e1
Tentatives : 0Chargement…

Imprimez 'positivo', 'zéro' ou 'negativo' en fonction de la valeur de n.

Chargement de l'éditeur…
Afficher l'indice

Chaîne `if / else if / else` avec conditions sur le panneau.

Solution disponible après 3 tentatives

Exercice#go.m2.l1.e2
Tentatives : 0Chargement…

Utilisez l'instruction init pour déclarer v := 42 dans le if et imprimez-la uniquement si v >= 18.

Chargement de l'éditeur…
Afficher l'indice

Syntaxe : `if init; condition { ... }`.

Solution disponible après 3 tentatives

Quiz#go.m2.l1.e3
Prêt

Qu'imprime ce programme ?

Go
x := 10
if x := 3; x > 5 {
    fmt.Println("dentro:", x)
} else {
    fmt.Println("else:", x)
}
fmt.Println("dopo:", x)
Options de réponse

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 de v et err.
  • Shadowing dans l'initialisation : veillez à ne pas ombrer les variables externes.
  • Pas de ternaire : écrire un if/else étendu.