1 Döngü İfadelerinin Genel Bakışı

Go dilinde, döngü ifadeleri bize bir kod bloğunu birden çok kez çalıştırmamıza olanak tanır. Belirli işlemleri tekrar tekrar gerçekleştirmeniz gerektiğinde, döngü ifadeleri çok yararlı olur. Örneğin, bir dizideki her elemanı tekrarlamak veya belirli bir koşul karşılanana kadar bir işlemi tekrar etmek isteyebilirsiniz. Go'da, döngü ifadeleri genellikle yalnızca for anahtar kelimesi kullanılarak uygulanır ve Go dilindeki tek döngü ifadesidir. Döngü ifadelerinin doğru kullanımı, verimli ve sürdürülebilir kod yazmak için son derece önemlidir.

2 for Döngüsünün Temelleri

2.1 for Döngüsünün Yapısı

Go dilindeki for döngüsü üç bölümden oluşur:

  1. Başlatma ifadesi: ilk tekrardan önce çalıştırılır, genellikle bir döngü sayacı bildirmek için kullanılır.
  2. Koşul ifadesi: her tekrardan önce değerlendirilir. Eğer koşul true ise, döngü gövdesi çalıştırılır.
  3. Sonraki ifade: her tekrarın kod bloğundan sonra çalıştırılır, genellikle döngü sayacını güncellemek için kullanılır.

for döngüsünün sözdizimi aşağıdaki gibidir:

for başlatma ifadesi; koşul ifadesi; sonraki ifade {
    // döngü gövde kodu
}

2.2 for Döngüsünün Basit Bir Örneği

for döngüsünün yürütme sürecini basit bir örnek üzerinden anlayalım:

package main

import "fmt"

func main() {
    for i := 0; i < 5; i++ {
        fmt.Println("i'nin değeri:", i)
    }
}

Bu örnekte, değişken i 0 olarak başlatılır. for döngüsü, i < 5 koşulunun doğru olup olmadığını kontrol eder. Koşul doğruysa, döngü gövdesi çalıştırılır ve i değeri yazdırılır. Döngü gövdesi çalıştırıldıktan sonra, i değeri i++ (artırma işlemi) ile güncellenir ve ardından döngü koşulu i değeri 5 olduğunda false olana kadar tekrar kontrol edilir ve for döngüsü sona erer.

2.3 Diğer for Döngüsü Örnekleri

Go dilindeki for döngüsü çok esnektir ve farklı senaryoları ele almak için çeşitli biçimlerde yazılabilir.

2.3.1 Sonsuz Döngü

Go'da, for döngüsünün başlatma ifadesi, koşul ifadesi ve sonraki ifadesi atlanarak, bir break ifadesi veya bir fonksiyonun dönüş değeri tarafından sonlandırılana kadar sürecek sonsuz bir döngü oluşturabilirsiniz.

for {
    // Sonsuz döngü içindeki kod
    if bazıKoşul {
        break // Belirli bir koşul karşılandığında döngüden çık
    }
}

2.3.2 Sadece Koşul İçeren Döngü

Go'da, diğer programlama dillerindeki while döngüsüne benzer şekilde, yalnızca bir koşul içeren bir for döngüsü de kullanabilirsiniz.

n := 0
for n < 5 {
    fmt.Println(n)
    n++
}

Yukarıdaki kod 0 ile 4 arasını yazdırır ve döngü, n değeri 5 olduğunda sona erer.

2.3.3 Bir dizi veya dilim üzerinde döngü

Go'da, range anahtar kelimesi bir dizinin veya dilimin her bir elemanı üzerindeki iterasyonu basitleştirmek için kullanılır.

elemanlar := []int{1, 2, 3, 4, 5}
for indeks, değer := range elemanlar {
    fmt.Printf("İndeks: %d, Değer: %d\n", indeks, değer)
}

Yukarıdaki kod, her elemanın endeksini ve değerini yazdıracaktır. Elemanların değerlerine sadece ihtiyacınız varsa, endeksi görmezden gelmek için _ kullanabilirsiniz.

for _, değer := range elemanlar {
    fmt.Printf("Değer: %d\n", değer)
}

Not: Dizilerin kullanımı ileriki bölümlerde detaylı olarak açıklanacaktır. Eğer bu kısmı anlamadıysanız, for döngüsünün böyle kullanılabileceğini anlamanız yeterlidir.

2.3.4 Haritalar üzerinde döngü

Bir harita üzerinde döngü yaparken, for döngüsü ve range ifadesinin birleşimi çok güçlüdür. Bu size haritanın her bir anahtar-değer çiftini almanızı sağlar.

colors := map[string]string{"red": "#ff000", "green": "#00ff00", "blue": "#000ff"}
for key, value := range colors {
    fmt.Printf("Anahtar: %s, Değer: %s\n", key, value)
}

Bu örnekte, colors haritasındaki tüm anahtarları ve bunların karşılık gelen değerlerini yazdırıyoruz. Dilimler üzerinde döngü yaparken olduğu gibi, yalnızca anahtarı veya değeri gerekiyorsa, diğerini ihmal etmeyi seçebilirsiniz.

Not: Harita kullanımı detaylı bir şekilde daha sonraki bölümlerde açıklanacaktır. Eğer bu kısmı anlamazsanız endişelenmeyin, sadece for döngüsünün bu şekilde kullanılabileceğini anlamanız yeterlidir.

3 Döngülerin akışını kontrol etmek

3.1 Döngüyü sonlandırmak için break kullanın

Bazı durumlarda belirli bir koşul karşılandığında döngüden erken çıkmamız gerekebilir, böyle durumlarda break ifadesi kullanılabilir. Aşağıda break kullanarak döngüden çıkmak için bir örnek bulunmaktadır:

package main

import "fmt"

func main() {
    for i := 0; i < 10; i++ {
        if i == 5 {
            break // i 5 olduğunda döngüden çık
        }
        fmt.Println("i'nin değeri:", i)
    }
    // Çıktı sadece 0 ile 4 arasındaki değerleri içerecektir
}

3.2 İterasyonları atlamak için continue kullanın

Belirli durumlarda, mevcut iterasyonu atlamak ve döngüdeki bir sonraki iterasyona devam etmek isteyebiliriz. Bunun için continue ifadesi kullanılabilir. İşte bir örnek:

package main

import "fmt"

func main() {
    for i := 0; i < 10; i++ {
        if i%2 != 0 {
            continue // i tek ise bu iterasyonu atla
        }
        fmt.Println("Çift sayı:", i)
    }
}