switch ve fallthrough
- Go kursu
- Başlangıç
- Ders 38/90
- 4 dk
switch ile çoklu koşul ve fallthrough davranışını öğrenirsin.
switch ve fallthrough
switch bir değeri birden çok olasılıkla karşılaştırır. Bir case virgülle birden çok değer alabilir; eşleşen case bitince switch biter:
switch gun {
case "Cumartesi", "Pazar":
fmt.Println("hafta sonu")
case "Cuma":
fmt.Println("son iş günü")
default:
fmt.Println("iş günü")
}Bir sonraki case'e bilerek geçmek için fallthrough yazılır; nadiren gerekir.
Koşulsuz switch
Değer verilmeyen switch, uzun if-else zincirlerinin okunur hâlidir; her case bir bool ifadesidir:
switch {
case sicaklik < 0:
fmt.Println("donuyor")
case sicaklik < 20:
fmt.Println("serin")
default:
fmt.Println("sıcak")
}Case'ler yukarıdan aşağı denenir; ilk doğru olan çalışır.
Uygulama Gün türü
gunTuru(gun string) string yaz: "Cumartesi" ve "Pazar" için "hafta sonu", diğerleri için "iş günü". gunTuru("Pazar") ve gunTuru("Salı") sonuçlarını tek satırda yazdır.
Başlangıç kodu
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
package main
import "fmt"
func gunTuru(gun string) string {
switch gun {
case "Cumartesi", "Pazar":
return "hafta sonu"
default:
return "iş günü"
}
}
func main() {
fmt.Println(gunTuru("Pazar"), gunTuru("Salı"))
}Beklenen çıktı
hafta sonu iş günü
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>fallthrough</code> sonraki case'in koşulunu kontrol eder mi?
- Tüm case'leri çalıştırır
- default'a atlar
- Hayır; koşula bakmadan sonraki case'in gövdesini çalıştırır Doğru cevap
- Evet, koşul doğruysa çalıştırır
Açıklama: fallthrough koşulsuz geçiştir; bu yüzden şaşırtıcı davranışlara yol açabilir ve dikkatli kullanılır.
2 Çoklu değer
switch gun {
case "Cumartesi"____ "Pazar":
fmt.Println("hafta sonu")
}
switch gun {
case "Cumartesi", "Pazar":
fmt.Println("hafta sonu")
}
Açıklama: Bir case birden çok değeri virgülle ayırarak alır.
3 Girdi ve çıktı
| Kavram | Anlamı |
|---|---|
"Pazar" |
hafta sonu |
"Cuma" |
son iş günü |
"Salı" |
iş günü (default) |
sicaklik = -3 |
donuyor |