Menu
Coddy logo textTech

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: 20

Na 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: 10

To 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.

challenge icon

Wyzwanie

Początkujący

W 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)
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator Go online