Menu
Coddy logo textTech

Masquage de variable dans `if`

Fait partie de la section Fondamentaux du Journey GO de Coddy — leçon 37 sur 109.

Apprenons-en davantage sur l'ombrage de variables dans les instructions if. Cela vous permet de créer une variable qui n'existe qu'à l'intérieur du bloc if et de ses blocs else associés.

Tout d'abord, créons une variable en dehors de notre instruction conditionnelle :

x := 10
fmt.Println("Original x value:", x)

Après l'exécution de ce code, nous aurons une variable x avec la valeur 10 que nous pourrons utiliser tout au long de notre programme.

Maintenant, utilisons le masquage de variables (variable shadowing) dans une instruction if pour créer une nouvelle variable qui n'existe qu'à l'intérieur de ce bloc :

if y := x * 2; y > 15 {
    fmt.Println("y is greater than 15:", y)
    // y existe uniquement dans ce bloc
} else {
    fmt.Println("y is not greater than 15:", y)
    // y est également disponible dans les blocs else
}

Après l'exécution de ce code, Go calculera y comme étant 20 (ce qui correspond à x * 2), vérifiera s'il est supérieur à 15, puis exécutera le premier bloc. La sortie s'affichera à l'écran :

y is greater than 15: 20

Enfin, essayons d'accéder à nos variables après l'instruction if :

// fmt.Println(y) provoquerait une erreur - y n'existe pas ici
fmt.Println("x is still:", x)

Après l'exécution de ce code, nous pouvons toujours accéder à x, mais y n'est plus disponible car elle n'existait qu'à l'intérieur des blocs if et else. La sortie affichera sur l'écran :

x is still: 10

Ceci démontre comment l'ombrage de variables (variable shadowing) fonctionne dans les instructions if - la variable y est uniquement accessible à l'intérieur des blocs conditionnels où elle a été déclarée.

challenge icon

Défi

Débutant

Dans ce défi, vous allez pratiquer le masquage de variables (variable shadowing) dans une instruction if. Vous verrez comment une variable déclarée à l'intérieur d'un bloc if peut avoir le même nom qu'une variable dans la portée externe, mais avec une valeur différente.

Le code possède une variable message dans la portée externe. Votre tâche consiste à créer une variable masquée avec le même nom à l'intérieur du bloc if, puis à afficher les deux variables pour observer l'effet de masquage.

Aide-mémoire

Le masquage de variables (variable shadowing) dans les instructions if vous permet de créer des variables qui n'existent qu'à l'intérieur du bloc conditionnel et de ses blocs else associés.

Syntaxe pour le masquage de variables dans les instructions if :

if variable := expression; condition {
    // variable n'existe que dans ce bloc
} else {
    // variable est également disponible dans les blocs else
}

Exemple :

x := 10
if y := x * 2; y > 15 {
    fmt.Println("y is greater than 15:", y)
} else {
    fmt.Println("y is not greater than 15:", y)
}
// y n'est plus accessible ici
fmt.Println("x is still:", x)

La variable masquée n'est accessible qu'à l'intérieur des blocs if et else où elle a été déclarée, et non en dehors de ceux-ci.

Essayez vous-même

package main

import "fmt"

func main() {
	// Variable de portée externe
	message := "Hello from outer scope"
	
	isLoggedIn := true
	
	if isLoggedIn {
		// TODO: Créer une nouvelle variable nommée 'message' avec la valeur "Hello from inner scope"
		
		// Ceci affiche le message de la portée interne
		fmt.Println(message)
	}
	
	// Ceci affiche le message de la portée externe
	fmt.Println(message)
}
quiz iconTestez-vous

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