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: 20Versuchen 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: 10Dies 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.
Aufgabe
AnfängerIn 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)
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4Vergleichs- & logische Operatoren
Vergleichsoperatoren - Teil 1Vergleichsoperatoren - Teil 2Logischer UND-OperatorLogischer ODER-OperatorLogischer NICHT-OperatorGrundlagen der OperatorrangfolgeZusammenfassung - Vergleiche anstellen7Kontrollfluss: Schleifen
Die `for`-Schleife erklärtfor-Schleife - Grundlagenfor-Schleife - Nur BedingungDas `break`-SchlüsselwortDas `continue`-SchlüsselwortVerschachtelte SchleifenZusammenfassung - Aktionen wiederholen2Variablen und grundlegende Datentypen
Was ist eine VariableTypinferenz mit `:=`Ganzzahlen (int)GleitkommazahlenBoolesche WerteStringsZero ValuesKonstantenNamenskonventionenZusammenfassung - Variablen und Typen5Grundlagen der Ein- und Ausgabe
Formatierte AusgabeFormat-VerbenTypen ausgebenEinfache Benutzereingaben erhaltenZusammenfassung – Ein- und Ausgabe8Funktionen
Funktionen verstehenEine Funktion deklarierenFunktionen aufrufenFunktionsparameterEinen einzelnen Wert zurückgebenMehrere Werte zurückgebenBenannte RückgabewerteGrundlagen des Funktions-ScopesZusammenfassung – Wiederverwendbaren Code erstellen3Grundlegende Operatoren
Arithmetische OperatorenDivisionsoperatorDer Modulo-OperatorZuweisungsoperatorKombinierte ZuweisungsoperatorenInkrement und DekrementZusammenfassung - Berechnungen6Kontrollfluss: Bedingte Anweisungen
Die `if`-AnweisungDas `else`-SchlüsselwortDas `else if`-SchlüsselwortVariable Shadowing in `if`Variablen initialisierenDie `switch`-AnweisungSwitch mit AusdrückenSwitch ohne AusdruckDas `fallthrough`-SchlüsselwortZusammenfassung – Entscheidungen treffen9Zeiger
Was ist ein Zeiger?Deklarieren von ZeigervariablenDer AdressoperatorDereferenzieren von ZeigernVerwendung von Zeigern in FunktionenNil-ZeigerZusammenfassung – Zeiger verstehen12Zusammengesetzte Typen: Maps
Einführung in MapsDeklarieren von Map-LiteralenErstellen von Maps mit `make`Hinzufügen und Aktualisieren von Key-Value-PaarenZugriff auf Map-WerteÜberprüfen der Existenz von SchlüsselnLöschen von Map-EinträgenMap-LängeIterieren über MapsZusammenfassung – Key-Value-Speicher