Kontrol Yapıları: Go'da if-else ve switch-case Kullanımı

irfo

Moderatör
Katılım
7 Ocak 2026
Mesajlar
71
Tepkime puanı
2
Puanları
8

Parantezlere Veda​

Go'nun sözdizimi C ailesinden gelse de, gereksiz karakterlerden arındırılmıştır. Kontrol yapılarında en büyük fark: Şartların etrafında parantez ( ) kullanılmaz!

1. if else yapısı​

Basit, temiz ve parantezsiz. Ancak süslü parantezler { } zorunludur (tek satır olsa bile).

Kod:
age := 18

if age >= 18 {  // Parantez yok!
    fmt.Println("Ehliyet alabilirsin.")
} else {
    fmt.Println("Büyü de gel.")
}


Go'ya Özel: "If with Short Statement"Go'da if satırının içinde, şarttan önce değişken tanımlayabilirsiniz. Bu değişkenin ömrü sadece o if bloğu kadardır.

Kod:
// "limit" değişkeni sadece bu blokta yaşar
if limit := 50; age > limit {
    fmt.Println("Yaşlısın")
}

Bu özellik, özellikle Hata Yönetiminde (if err := ...; err != nil) çok sık kullanılır.

2. switch-case yapısı​

Diğer dillerin aksine, Go'da her case'in sonuna break yazmanıza gerek yoktur. Go, bir case eşleştiğinde orayı çalıştırır ve otomatik olarak çıkar.

Kod:
gun := "Pazar"

switch gun {
case "Cumartesi", "Pazar": // Virgülle çoklu seçim
    fmt.Println("Hafta sonu!")
case "Pazartesi":
    fmt.Println("İş başı...")
default:
    fmt.Println("Hafta içi")
}
switch ile if-else ZinciriBazen switch'in yanına değişken yazmadan, caselerin içine şartlar yazılarak temiz bir if-else if-else zinciri oluşturulur:

Kod:
saat := 14
switch { // Değişken yok
case saat < 12:
    fmt.Println("Günaydın")
case saat < 18:
    fmt.Println("İyi günler")
default:
    fmt.Println("İyi akşamlar")
}

Sonuç​

Go'nun kontrol yapıları, "parantez kalabalığını" ortadan kaldırarak kodun daha hızlı okunmasını sağlar. switch yapısı, diğer dillere göre çok daha yetenekli ve güvenlidir (break unutma derdi yoktur).
 
Geri
Üst