Menu
Coddy logo textTech

Variable Shadowing in `if`

Teil des Abschnitts Grundlagen der GO-Journey von Coddy — Lektion 37 von 109.

Lernen wir etwas über Variable Shadowing in if-Anweisungen. Dies ermöglicht es Ihnen, eine Variable zu erstellen, die nur innerhalb des if-Blocks und seiner zugehörigen else-Blöcke existiert.

Zuerst erstellen wir eine Variable außerhalb unserer bedingten Anweisung:

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

Nach der Ausführung dieses Codes werden wir eine Variable x mit dem Wert 10 haben, die wir in unserem gesamten Programm verwenden können.

Lassen Sie uns nun Variable Shadowing in einer if-Anweisung verwenden, um eine neue Variable zu erstellen, die nur innerhalb dieses Blocks existiert:

if y := x * 2; y > 15 {
    fmt.Println("y is greater than 15:", y)
    // y existiert nur in diesem Block
} else {
    fmt.Println("y is not greater than 15:", y)
    // y ist auch in else-Blöcken verfügbar
}

Nach der Ausführung dieses Codes wird Go y als 20 berechnen (was x * 2 entspricht), prüfen, ob es größer als 15 ist, und dann den ersten Block ausführen. Die Ausgabe auf dem Bildschirm wird sein:

y is greater than 15: 20

Versuchen wir schließlich, nach der if-Anweisung auf unsere Variablen zuzugreifen:

// fmt.Println(y) würde einen Fehler verursachen - y existiert hier nicht
fmt.Println("x is still:", x)

Nach der Ausführung dieses Codes können wir immer noch auf x zugreifen, aber y ist nicht mehr verfügbar, da es nur innerhalb der if- und else-Blöcke existierte. Die Ausgabe auf dem Bildschirm wird sein:

x is still: 10

Dies zeigt, wie Variable Shadowing in if-Anweisungen funktioniert – die Variable y ist nur innerhalb der bedingten Blöcke zugänglich, in denen sie deklariert wurde.

challenge icon

Aufgabe

Anfänger

In dieser Herausforderung üben Sie das Variable Shadowing in einer if-Anweisung. Sie werden sehen, wie eine Variable, die innerhalb eines if-Blocks deklariert wird, denselben Namen wie eine Variable im äußeren Gültigkeitsbereich haben kann, aber einen anderen Wert besitzt.

Der Code enthält eine Variable message im äußeren Gültigkeitsbereich. Ihre Aufgabe ist es, eine verschattete Variable mit demselben Namen innerhalb des if-Blocks zu erstellen und dann beide Variablen auszugeben, um den Shadowing-Effekt zu sehen.

Spickzettel

Variable Shadowing in if-Anweisungen ermöglicht es Ihnen, Variablen zu erstellen, die nur innerhalb des Bedingungsblocks und der zugehörigen else-Blöcke existieren.

Syntax für Variable Shadowing in if-Anweisungen:

if variable := expression; condition {
    // variable existiert nur in diesem Block
} else {
    // variable ist auch in else-Blöcken verfügbar
}

Beispiel:

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 ist hier nicht mehr zugänglich
fmt.Println("x is still:", x)

Die überlagerte Variable ist nur innerhalb der if- und else-Blöcke zugänglich, in denen sie deklariert wurde, nicht außerhalb davon.

Probier es selbst

package main

import "fmt"

func main() {
	// Variable im äußeren Gültigkeitsbereich
	message := "Hello from outer scope"
	
	isLoggedIn := true
	
	if isLoggedIn {
		// TODO: Erstelle eine neue Variable namens 'message' mit dem Wert "Hello from inner scope"
		
		// Dies gibt die Nachricht aus dem inneren Gültigkeitsbereich aus
		fmt.Println(message)
	}
	
	// Dies gibt die Nachricht aus dem äußeren Gültigkeitsbereich aus
	fmt.Println(message)
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen