Menu
CoddyTech

Masquage de variable dans `if`

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

Découvrons le masquage de variables dans les instructions if. Une instruction if peut déclarer une variable avant sa condition, et cette variable n’existe que dans le bloc if et ses blocs else associés. Si elle porte le même nom qu’une variable située en dehors de l’instruction if, elle masque la variable externe dans ces blocs.

Commençons par créer une variable en dehors de notre instruction conditionnelle :

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

Après avoir exécuté ce code, nous aurons une variable x ayant la valeur 10, que nous pourrons utiliser dans tout notre programme.

Maintenant, déclarons une nouvelle variable y dans l’instruction if. Elle n’existe que dans les blocs if et else :

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

Après avoir exécuté ce code, Go calculera y comme étant égal à 20 (soit x * 2), vérifiera si cette valeur est supérieure à 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 avoir exécuté ce code, nous pouvons toujours accéder à x, mais y n’est plus disponible, car il n’existait que dans les blocs if et else. Le résultat s’affichera à l’écran :

x is still: 10

Cela illustre la portée d’une variable déclarée dans une instruction if : la variable y n’est accessible que dans les blocs conditionnels où elle a été déclarée. Il n’y a pas de y à l’extérieur, donc rien n’est masqué ici. Si nous l’avions appelée x à la place, elle masquerait le x externe dans ces blocs, et le x externe vaudrait toujours 10 après ces blocs.

challenge icon

Défi

Débutant

Dans ce défi, tu vas t’exercer au masquage de variable dans une instruction if. Tu verras 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 une valeur différente.

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

Essayez vous-même

package main

import "fmt"

func main() {
	// Variable de la 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

Entraînez-vous par vous-même : Compilateur Go en ligne