4# Go Programlama Dili — Diziler

Nailcan Küçük
3 min readApr 27, 2020

Diziler diğer dillerden de aşina olduğunuz, içerisinde birden çok değer bulundurabilen yapılardır. Bir dizi tanımlanırken içerisinde tutacağı elemanlarının veri tipi ve dizinin boyutu (yani maksimum eleman sayısı) belirtilir. Tanımlanan veri tipi ve dizi boyutu daha sonradan değiştirilemez.

Go dilinde dizilerin bir önemi de slice denilen Go diline özel yapıların temelini oluşturmasıdır. Bu konuya bir sonraki yazımda değinmeyi düşünüyorum.

Dizinin herhangi bir indeksindeki elemanının değerine indeks numarası ile ulaşabiliriz. Yine istediğimiz indeksteki verinin değerine = operatörü yardımı ile atama yapabiliriz.

Örnek bir dizi tanımı için en temel tanımlama kalıbı aşağıdaki gibidir.

değişken_adi := [dizi_boyutu]veri_tipi{}
değişken_adi := [dizi_boyutu]veri_tipi{deger1, deger2… degerN}

Şimdi bu kalıplara göre oyunlar isminde, string tipinde ve boyutu 3 eleman olan bir dizinin tanımlamasını ve değer atamasını yapalım

package mainimport (
“fmt”
)
func main() {
// Yöntem 1
oyunlar1 := [3]string{}
oyunlar1[0] = “Withcer”
oyunlar1[1] = “PES”
oyunlar1[2] = “CS:GO”
fmt.Printf(“oyunlar1: %v \n”, oyunlar1)
// Yöntem 2
oyunlar2 := [3]string{“Witcher”, “PES”, “CS:GO”}
fmt.Printf(“oyunlar2: %v\n”, oyunlar2)
}

Çıktısı:

oyunlar1: [Withcer PES CS:GO] 
oyunlar2: [Witcher PES CS:GO]

Bir diziyi tanımlarken, değer atamadığımız her indeks için dizinin veri tipinde sıfır değeri (zero value) otomatik olarak atanır.

Örneğin yukarıdaki Yöntem 1 şeklinde diziyi ilk tanımladığımız anda henüz bir değer ataması yapmadığımız için her indeksinde string veri tipinin sıfır değeri olan boş string (“”) değeri vardır.

package mainimport (
“fmt”
)
func main() {
oyunlar := [3]string{}
fmt.Printf(“oyunlar: %v \n”, oyunlar)
bayraklar := [3]bool{}
fmt.Printf(“bayraklar: %v \n”, bayraklar)
sayilar := [3]int{}
fmt.Printf(“sayilar: %v \n”, sayilar)
}

Çıktısı:

oyunlar: [ ] // [“”, “”, “”]
bayraklar: [false false false]
sayilar: [0 0 0]

Eğer bir dizinin boyutunun dışında bir indekse değer ataması yapmaya çalışırsanız “out of bounds” hatası alırsınız

package mainfunc main() {
oyunlar := [3]string{}
oyunlar[3] = “Mario”
}

Çıktısı:

./prog.go:5:9: invalid array index 3 (out of bounds for 3-element array)

Standart bir dizi tanımladığınız zaman bu dizi aslında tek boyutludur. Ancak isterseniz aşağıdaki gibi iki boyutlu diziler (matris) de oluşturabilirsiniz.

type Matris [3][3]stringfunc main() {
m := Matris{
{“a”,”b”,”c”},
{“1”,”2",”3"},
{“x”,”y”,”z”},
}

Diziler içerisinde iterasyon işleri yapmak için diğer dillerdeki gibi döngülerinden yararlanırız. Farklı döngüler ile dizi üzerinden birkaç işlem örneğini aşağıda göstermek istiyorum.

package mainimport “fmt”func main() {
dizi := [3]int{0, 1, 2}
// for döngüsü ile
fmt.Println(“For v1”)
for i := 0; i < len(dizi); i++ {
fmt.Println(dizi[i])
}
fmt.Println(“Continue & Break”)
// continue & break
for i := 0; i < len(dizi); i++ {
fmt.Println(dizi[i])
if i == 0 {
// Döngü başına döner
continue
}
if i == 2 {
// Döngüden çıkar
break
}
fmt.Println(“döngüye devam etti”)
}
fmt.Println(“For v2”)
// farklı bir for döngüsü
var i int
for {
fmt.Println(dizi[i])
i += 1
if i >= len(dizi) {
break
}
}
fmt.Println(“Range”)
// range ile
for index, value := range dizi {
fmt.Println(index, value)
}
}

Go Programlama Dili diziler hakkında kısaca yazmaya çalıştım. Umarım sizler için de faydalı olmuştur :)

İletişimde kalmak isterseniz linkedin üzerinden haberleşebiliriz.

--

--