Przesłanianie zmiennych w `if`
Część sekcji Podstawy ścieżki GO w Coddy. Lekcja 37 z 109.
Dowiedzmy się, czym jest przesłanianie zmiennych w instrukcjach if. Pozwala ono utworzyć zmienną, która istnieje tylko w bloku if i powiązanych z nim blokach else.
Najpierw utwórzmy zmienną poza instrukcją warunkową:
x := 10
fmt.Println("Original x value:", x)Po wykonaniu tego kodu będziemy mieć zmienną x o wartości 10, której możemy używać w całym programie.
Teraz użyjmy przesłaniania zmiennych w instrukcji if, aby utworzyć nową zmienną, która istnieje tylko w tym bloku:
if y := x * 2; y > 15 {
fmt.Println("y is greater than 15:", y)
// y istnieje tylko w tym bloku
} else {
fmt.Println("y is not greater than 15:", y)
// y jest również dostępne w blokach else
}Po wykonaniu tego kodu Go obliczy y jako 20 (czyli x * 2), sprawdzi, czy jest większe niż 15, a następnie wykona pierwszy blok. Wynik zostanie wyświetlony na ekranie:
y is greater than 15: 20Na koniec spróbujmy uzyskać dostęp do naszych zmiennych po instrukcji if:
// fmt.Println(y) spowodowałoby błąd — y tutaj nie istnieje
fmt.Println("x is still:", x)Po wykonaniu tego kodu nadal możemy uzyskać dostęp do x, ale y nie jest już dostępne, ponieważ istniało tylko w blokach if i else. Na ekranie pojawi się następujący wynik:
x is still: 10To pokazuje, jak działa przesłanianie zmiennych w instrukcjach if — zmienna y jest dostępna tylko w blokach warunkowych, w których została zadeklarowana.
Wyzwanie
PoczątkującyW tym wyzwaniu poćwiczysz przesłanianie zmiennych w instrukcji if. Zobaczysz, jak zmienna zadeklarowana wewnątrz bloku if może mieć taką samą nazwę jak zmienna w zakresie zewnętrznym, ale inną wartość.
W kodzie znajduje się zmienna message w zakresie zewnętrznym. Twoim zadaniem jest utworzyć przesłoniętą zmienną o tej samej nazwie wewnątrz bloku if, a następnie wypisać obie zmienne, aby zobaczyć efekt przesłaniania.
Spróbuj swoich sił
package main
import "fmt"
func main() {
// Zmienna z zakresu zewnętrznego
message := "Hello from outer scope"
isLoggedIn := true
if isLoggedIn {
// TODO: Utwórz nową zmienną o nazwie 'message' z wartością "Hello from inner scope"
// To wypisuje komunikat z zakresu wewnętrznego
fmt.Println(message)
}
// To wypisuje komunikat z zakresu zewnętrznego
fmt.Println(message)
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory porównania i logiczne
Operatory porównania – część 1Operatory porównania – część 2Logiczny operator ANDLogiczny operator ORLogiczny operator NOTPodstawy kolejności wykonywania operatorówPodsumowanie – porównywanie7Sterowanie przepływem: pętle
Jak działa pętla `for`Pętla `for` — podstawyPętla `for` — tylko warunekSłowo kluczowe `break`Słowo kluczowe `continue`Pętle zagnieżdżonePodsumowanie — powtarzanie działań2Zmienne i podstawowe typy danych
Czym jest zmiennaWnioskowanie o typie za pomocą `:=`Liczby całkowite (int)Liczby zmiennoprzecinkoweWartości logiczneCiągi znakówWartości zeroweStałeKonwencje nazewnictwaPodsumowanie – zmienne i typy5Podstawowe wejście/wyjście
Formatowane wyjścieSpecyfikatory formatuWyświetlanie typówPobieranie podstawowych danych od użytkownikaPodsumowanie — wejście i wyjście8Funkcje
Zrozumienie funkcjiDeklarowanie funkcjiWywoływanie funkcjiParametry funkcjiZwracanie jednej wartościZwracanie wielu wartościNazwane wartości zwracanePodstawy zakresu funkcjiPodsumowanie — tworzenie wielokrotnego użytku kodu11Typy złożone: wycinki
Wprowadzenie do wycinkówDeklarowanie literałów wycinkówTworzenie wycinków za pomocą `make`Długość a pojemność wycinkaDostęp do elementów wycinkaDodawanie elementówWycinanie z istniejących wycinków i tablicIterowanie po wycinkachKopiowanie wycinkówPodsumowanie — listy dynamiczne3Podstawowe operatory
Operatory arytmetyczneOperator dzieleniaOperator moduloOperator przypisaniaOperatory przypisania z działaniemZwiększanie i zmniejszaniePowtórka – obliczenia6Sterowanie przepływem: instrukcje warunkowe
Instrukcja `if`Słowo kluczowe `else`Słowo kluczowe `else if`Przesłanianie zmiennych w `if`Inicjalizacja zmiennychInstrukcja `switch``switch` z wyrażeniami`switch` bez wyrażeniaSłowo kluczowe `fallthrough`Podsumowanie — podejmowanie decyzjiPoćwicz samodzielnie: Kompilator Go online