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 6a kapasite 6a'nın içeriği [2 3 5 6 7 9]b uzunluk 2b kapasite 4b'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
Last modified 2yr ago