`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: 20Son 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: 10Bu, 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.
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)
}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
4Karşılaştırma ve Mantıksal Operatörler
Karşılaştırma Operatörleri - Bölüm 1Karşılaştırma Operatörleri - Bölüm 2Mantıksal VE OperatörüMantıksal VEYA OperatörüMantıksal DEĞİL OperatörüOperatör Önceliği TemelleriÖzet - Karşılaştırma Yapma7Kontrol Akışı: Döngüler
`for` Döngüsü Nedir?`for` Döngüsü - Temel`for` Döngüsü - Sadece Koşul`break` Anahtar Kelimesi`continue` Anahtar Kelimesiİç İçe DöngülerÖzet - İşlemleri Tekrarlama2Değişkenler ve Temel Veri Tipleri
Değişken nedir?`:=` ile Tür ÇıkarımıTam Sayılar (int)Ondalıklı SayılarBooleanlarStringlerSıfır DeğerlerSabitlerİsimlendirme KurallarıÖzet - Değişkenler ve Türler5Temel Giriş/Çıkış
Biçimlendirilmiş ÇıktıBiçim BelirteçleriVeri Tiplerini YazdırmaTemel Kullanıcı Girdisi AlmaÖzet - Giriş ve Çıkış8Fonksiyonlar
Fonksiyonları AnlamakFonksiyon TanımlamaFonksiyonları ÇağırmaFonksiyon ParametreleriTek Bir Değer DöndürmeBirden Fazla Değer Döndürmeİsimlendirilmiş Dönüş DeğerleriFonksiyon Kapsamı TemelleriÖzet - Yeniden Kullanılabilir Kod Oluşturma3Temel Operatörler
Aritmetik OperatörlerBölme OperatörüModulo OperatörüAtama OperatörüBileşik Atama OperatörleriArtırma ve AzaltmaÖzet - Hesaplamalar6Kontrol Akışı: Koşullu İfadeler
`if` İfadesi`else` Anahtar Kelimesi`else if` Anahtar Kelimesi`if` İçinde Değişken GölgelemeDeğişkenleri Başlatma`switch` İfadesiİfadeli `switch`İfadesiz `switch``fallthrough` Anahtar KelimesiÖzet - Karar VermeKendi başına pratik yap: Online Go derleyicisi