Menu
CoddyTech

`if` İçinde Değişken Gölgeleme

Coddy'nin GO Journey'sinin Temeller bölümünün bir parçası. Ders 37 / 109.

if ifadelerinde değişken gölgelemesini öğrenelim. Bir if ifadesi, koşulundan önce bir değişken tanımlayabilir ve bu değişken yalnızca if bloğunda ve onunla ilişkili else bloklarında bulunur. Dışarıdaki bir değişkenle aynı ada sahipse, bu blokların içinde dış değişkeni gölgeler (gizler).

Önce koşullu ifademizin dışında bir değişken oluşturalım:

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

Bu kodu çalıştırdıktan sonra, programımızın her yerinde kullanabileceğimiz, değeri 10 olan bir x değişkenimiz olacak.

Şimdi, if ifadesinde yeni bir y değişkeni tanımlayalım. Bu değişken yalnızca if ve else bloklarında kullanılabilir:

if y := x * 2; y > 15 {
    fmt.Println("y is greater than 15:", y)
    // y yalnızca bu blokta mevcuttur
} else {
    fmt.Println("y is not greater than 15:", y)
    // y, else bloklarında da kullanılabilir
}

Bu kodu yürüttükten sonra Go, y değerini 20 (yani x * 2) olarak hesaplayacak, 15'ten büyük olup olmadığını kontrol edecek ve ardından ilk bloğu yürütecek. Çıktı ekranda şöyle görünecek:

y is greater than 15: 20

Son olarak, if ifadesinden sonra değişkenlerimize erişmeyi deneyelim:

// fmt.Println(y) bir hataya neden olurdu - y burada mevcut değil
fmt.Println("x is still:", x)

Bu kodu çalıştırdıktan sonra x değişkenine hâlâ erişebiliriz, ancak y artık kullanılamaz; çünkü yalnızca if ve else bloklarının içinde vardı. Çıktı ekranda şöyle görünür:

x is still: 10

Bu, bir if ifadesinde tanımlanan bir değişkenin kapsamını gösterir: y değişkenine yalnızca tanımlandığı koşul bloklarının içinde erişilebilir. Dış kapsamda bir y yoktur, dolayısıyla burada hiçbir değişken gölgelenmez. Bunun yerine değişkene x adını vermiş olsaydık, bu blokların içinde dış kapsamdaki x'i gölgelerdi ve bloklardan sonra dış kapsamdaki x yine 10 olurdu.

challenge icon

Görev

Başlangıç

Bu görevde, bir if ifadesinde değişken gölgeleme pratiği yapacaksın. Bir if bloğunun içinde tanımlanan bir değişkenin, dış kapsamdaki bir değişkenle aynı ada ama farklı bir değere sahip olabileceğini göreceksin.

Kodda, dış kapsamda message adlı bir değişken var. Görevin, if bloğunun içinde aynı ada sahip gölgelenmiş bir değişken oluşturmak ve ardından gölgeleme etkisini görmek için her iki değişkeni de yazdırmak.

Kendin dene

package main

import "fmt"

func main() {
	// Dış kapsamdaki değişken
	message := "Hello from outer scope"
	
	isLoggedIn := true
	
	if isLoggedIn {
		// TODO: "Hello from inner scope" değerine sahip 'message' adlı yeni bir değişken oluştur
		
		// Bu, iç kapsamdaki mesajı yazdırır
		fmt.Println(message)
	}
	
	// Bu, dış kapsamdaki mesajı yazdırır
	fmt.Println(message)
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temeller bölümündeki tüm dersler

Kendi başına pratik yap: Online Go derleyicisi