CodeBlanks Logo Icon CodeBlanks

Özet - Kontrol akışı

if, for ve switch'i birleştirerek bir puan hesaplayıcı yazarsın.

Kontrol akışı özeti

Karar: if / else if / else (koşul bool olmalı, kısa ifade alabilir) ve switch (virgüllü case, koşulsuz switch, nadiren fallthrough). Döngü: tek anahtar kelime for — sayaçlı, koşullu, sonsuz ve range. Akış kontrolü: break, continue, etiketler.

for i := range 15 {
    switch {
    case i%15 == 0:
        fmt.Println("FizzBuzz")
    case i%3 == 0:
        fmt.Println("Fizz")
    }
}

Erken dönüş

Go kodunda iç içe if-else yerine "erken dönüş" tercih edilir: hatalı ya da özel durumlar başta ele alınıp fonksiyondan çıkılır, ana akış girintisiz kalır.

func indirim(tutar float64, uye bool) float64 {
    if tutar <= 0 {
        return 0
    }
    if !uye {
        return tutar
    }
    return tutar * 0.9
}

Uygulama FizzBuzz

1'den 15'e kadar sayılar için: 15'e bölünüyorsa FizzBuzz, 3'e bölünüyorsa Fizz, 5'e bölünüyorsa Buzz, yoksa sayının kendisini yazdır. Hepsini tek satırda boşlukla ayırarak yazdır (fmt.Print ile, sonunda fmt.Println()).

Başlangıç kodu

main.go
package main

import "fmt"

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
package main

import "fmt"

func main() {
    for i := 1; i <= 15; i++ {
        switch {
        case i%15 == 0:
            fmt.Print("FizzBuzz ")
        case i%3 == 0:
            fmt.Print("Fizz ")
        case i%5 == 0:
            fmt.Print("Buzz ")
        default:
            fmt.Print(i, " ")
        }
    }
    fmt.Println()
}

Beklenen çıktı

1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 FizzBuzz'da <code>i%15 == 0</code> kontrolü neden ilk sırada olmalıdır?

  • 15'in katları 3'e de bölünür; önce 3 gelirse "Fizz" yazılır Doğru cevap
  • Daha hızlıdır
  • Go bunu zorunlu tutar
  • Sıra önemli değildir

Açıklama: Koşulsuz switch'te ilk doğru case çalışır; en özel koşul en üste yazılır.

2 Sayılarla range

Soru
for i := ____ 3 {
    fmt.Println(i)  // 0 1 2
}
Cevap
for i := range 3 {
    fmt.Println(i)  // 0 1 2
}

Açıklama: Go 1.22'den beri range bir tam sayı üzerinde 0'dan n-1'e kadar sayar.

3 Grubun özeti

Kavram Anlamı
if-else Karar
switch Çok yollu karar
for Tüm döngüler
break / continue Döngü kontrolü

Başlangıç bölümündeki tüm dersler