İçeriğe geç

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]int

Yukarı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]int
fmt.Println(len(sayilar)) // 5

Diziyi yazdırdığımızda aşağıdaki gibi bir sonuç ile karşılaşırız.

var sayilar [5]int
fmt.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]int
sayilar[1] = 15
fmt.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)) // 3

Bu ö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ı.