Diziler
Diziler (arrays), belirlenen türde elemanların bulunduğu listelerdir. Dizideki her elemanın hangi sırada bulunduğunu belirten bir sıralama yöntemi vardır. Bu sıralama yöntemine indeks denir. İndeks 0’dan başlayarak, n sayısına kadar ilerleyebilir.
var sayilar [5]intYukarıda uzunluğu 5 olan bir int dizisi tanımlanmıştır. Diziler uzunluğunun müsade ettiği ölçüde eleman sayısına sahip olabilirler ve uzunlukları değiştirilemez.
Bu yüzden değişmeyecek uzunlukta elemanları listelemek için kullanılması mantıklıdır.
Bir dizinin uzunluğu len fonksiyonu ile öğrenilebilir.
var sayilar [5]intfmt.Println(len(sayilar)) // 5Diziyi yazdırdığımızda aşağıdaki gibi bir sonuç ile karşılaşırız.
var sayilar [5]intfmt.Println(sayilar) // [0 0 0 0 0]İçerisinde 5 adet 0 bulunan bir liste yazdırıldığını görmekteyiz. Dizi içerisindeki elemanların değerleri belirlenmediği için int veri tipinin varsayılan değeri olan 0 değerlerini görmekteyiz.
Liste üzerindeki her bir elemanda değişiklik yapmak için, dizinin indeksleri ile atama işlemi yapabiliriz.
var sayilar [5]intsayilar[1] = 15fmt.Println(sayilar) // [0 15 0 0 0]veya direkt olarak tanımlama esnasında değerlerini belirtebiliriz.
sayilar := [5]int{5, 15, 25, 35, 45}fmt.Println(sayilar) // [5 15 25 35 45]veya
sayilar := [5]int{5, 15, 25}fmt.Println(sayilar) // [5 15 25 0 0]Dizide bulunmayan bir indeks üzerinden atama veya okuma işlemi yapamayız.
Go derleyicisi (gc) dizinin uzunluğundan yola çıkarak, böyle bir indeks bulunmadığı için, yazdığımız kodu derlemeyecektir.
Go’da dizi oluştururken dizi uzunluğunun belirlenmesini derleyiciye bırakmak için aşağıdaki gibi bir yöntem kullanabiliriz.
sayilar := [...]int{5, 15, 25}
fmt.Println(len(sayilar)) // 3Bu örnekte köşeli parantezler içerisinde ... kullanarak derleyiciye dizi içerisinde bulundurduğumuz eleman kadar bir dizi uzunluğu kullanmasını belirttik.
Dizi oluştururken sadece istediğimiz indeksin değerini girebiliriz. Değerini belirtmediğimiz indeksler dizide kullandığımız tipi varsayılan değerini alır.
sayilar := [5]int{0: 10, 2: 20, 4: 30}
fmt.Println(sayilar) // [10 0 20 0 30]Örnekte 0. indeksteki değerin 10, 2. indeksteki değerin 20 ve 4. indeksteki değerin de 30 olacağını belirttik. Değer belirtmediğimiz indeksler için dizi tipinin int olmasından dolayı, varsayılan değer olan 0 değerini aldı.