Links
Comment on page

Dilimler (Slices)

Dilimler bir dizideki değerlerin istediğimiz bölümünü kullanmamıza yarar. Yani diziyi bir pasta olarak düşünürsek kestiğimiz dilimi yiyoruz sadece. Örneğimize geçelim.
package main
import "fmt"
func main() {
 a := [6]int{2, 3, 5, 6, 7, 9}
 fmt.Println(a) //Çıktımız: [2 3 5 6 7 9]
var b []int = a[2:4] //Dilimleme işlemi
 fmt.Println(b) //Çıktımız: [5 6]
}
İnceleme kısmına geçelim. a isminde 6 tane int tipinde değer alan bir dizi oluşturduk. Çıktımızın içeriğini görmek için ekrana bastırdık. Dilimleme işlemi olarak yorum yaptığım satırda ise a dizisinde 2 ve 4 indeksi arasındaki değerleri dizi olarak b’ye kaydettik. b dizisinin içeriğini ekrana bastırdığımızda ise dilimlenmiş alanımızı gördük. Dilimleme işleminde [ ] içerisine dilimlemenin başlayacağı ve biteceği indeksi yazarız.
Dilim Varsayılanları (Sıfır Değerleri)
package main
import "fmt"
func main() {
 a := [6]int{2, 3, 5, 6, 7, 9}
var b []int = a[:4] //Boş bırakılan indeks 0 varsayıldı
 fmt.Println(b) //Çıktımız: [2 3 5 6]
var c []int = a[3:] //Boş bırakıldığı için 3. index ve sonrası alındı
 fmt.Println(c) //Çıktımız: [6 7 9]
}
Dilim Uzunluğu ve Kapasitesi Bir dilimin uzunluk ve kapasite değeri vardır. Dilimin uzunluğunu len() fonksiyonu ile, kapasitesini ise cap() fonksiyonu ile hesaplarız. Örneğimize geçelim.
package main
import "fmt"
func main() {
 a := [6]int{2, 3, 5, 6, 7, 9}
 b := a[2:4]
 fmt.Println("a uzunluk", len(a))
 fmt.Println("a kapasite", cap(a))
 fmt.Println("a'nın içeriği", a)
 fmt.Println("b uzunluk", len(b))
 fmt.Println("b kapasite", cap(b))
 fmt.Println("b'nin içeriği", b)
}
b dizisi ile a dizisini dilimlediğimiz için b dizisinin kapasitesi ve uzunluğu değişti. Uzunluk dizinin içindeki değerlerin sayısıdır. Kapasite ise dizinin maksimum alabileceği değer sayısıdır. Çıktımıza bakacak olursak;
a uzunluk 6
a kapasite 6
a'nın içeriği [2 3 5 6 7 9]
b uzunluk 2
b kapasite 4
b'nin içeriği [5 6]
Boş Dilimler (Nil Slices) Boş bir dilimin varsayılan (sıfır) değeri nil’dir. Örnek olarak;
package main
import "fmt"
func main() {
var a []int
if a == nil {
  fmt.Println("Boş")
}
}
Çıktısı tahmin edeceğiniz üzere Boş yazısı olaraktır.
Make ile Dilim Oluşturma Dilimler make fonksiyonu ile de oluşturulabilir. Dinamik büyüklükte diziler oluşturabiliriz.
a := make([]int, 5)
Burada make fonksiyonu ile uzunluğu 5 olan a adında bir dizi oluşturduk.
a := make([]int, 0, 5)
Burada ise make fonksiyonu ile uzunluğu 0, kapasitesi ise 5 olan a adında bir dizi oluşturduk.
Dilime Ekleme Yapma Bir dilime ekleme yapmak için append fonksiyonu kullanılır. Hemen bir örnek ile kullanılışını görelim.
package main
import "fmt"
func main() {
var a []string
 fmt.Println(a) //[ ]
 a = append(a, "Ali")
 a = append(a, "Veli")
 fmt.Println(a) //[Ali Veli]
}
a isminde string tipinde boş bir dizi oluşturduk. Hemen ardından boş olduğunu teyit etmek için a dizisini ekrana bastırdık. Daha sonra a dizisine append fonksiyonu ile “Ali” değerini ekledik. Yine aynı yöntem ile “Veli” değerini de ekledik. Son olarak a dizisinin çıktısının ekrana bastırdığımızda değerlerin eklenmiş olduğunu gördük.
fmt.Println(len(a), cap(a))
a dizisinin uzunluk ve kapasitesine baktığımızda aşağıdaki çıktıyı alırız.
2 2