range Kullanımı
for döngüsünde range anahtar kelimesi kullanılarak, bir listenin içerisindeki elemanlar daha pratik bir şekilde döndürülebilir.
Örnek olarak:
cities := []string{ "İstanbul", "Ankara", "İzmir", "Bursa",}
for i, v := range cities { fmt.Println(i, v)}Yukarıda range anahtar kelimesi kullanılarak, bir dilimin döndürülmesi örneğini görmekteyiz. range kelimesi kullanıldığında döndürülmesi hedeflenen dilim iki adet değişken döndürür.
Bunlardan ilki örnekteki imza kısmında i olarak tanımlanmış indeks değerimizdir. Bu değer bize for döngüsünün dilimin hangi indeksinde olduğunu verir.
İkincisi v olarak isimlendirdiğimiz değişkendir. Bu değişken dönmekte olan dilimin döndürmekte olduğumuz indeksteki elemanın değerini verir.
Örneğe göre çıktımız aşağıdaki gibi olacaktır.
0 İstanbul1 Ankara2 İzmir3 Bursarange anahtar kelimesi ile döngü kullanıldığında değer kısmını almak istemiyorsak sadece indeksi de alabiliriz.
for i := range cities { fmt.Println(i, cities[i])}Sadece değer kısmını almak istiyorsak, farklı olarak indeks kısmını boş tanımlamak gerekir.
for _, v := range cities { fmt.Println(v)}Eğer range ile kullanımda gelecek olan indeks ve değer kısımlarına ihtiyacımız yoksa, tanımlama yapmadan da kullanabiliriz.
for range cities { fmt.Println("selam")}Çıktımız aşağıdaki gibi olacaktır.
selamselamselamselamBu şekilde bir kullanımla cities diliminin uzunluğu kadar “selam” yazdırmış olduk.
range’i bir map üzerinde kullandığımızda her bir alan için bize iki değer verir. İlk değerimiz alan anahtarıdır. İkinci değer ise alanın değeridir.
cityPopulation := map[string]uint{ "İstanbul": 15_460_000, "Ankara": 5_663_000,}
// k -> key, v -> valuefor k, v := range cityPopulation { fmt.Println(k, v)}Çıktımız:
İstanbul 15460000Ankara 5663000Tam sayı üzerinden range kullanımıda mümkündür.
int türevleri, uint türevleri ve untyped tamsayıya uyan tüm sayılar range ile döndürülebilir.
for i := range 10 { fmt.Println(i)}Çıktımız:
0123456789i değişkeni üzerinden döngünün hangi adımında olduğumuzu öğrenebiliriz. Bu bilgiye gerek duymadığımız durumlarda, değişken oluşturmadan da kullanabiliriz.
for range 10 { fmt.Println("selam")}