Kesit (Slice) bir bakıma dizidir fakat diziden en önemli farkı boyutunun değiştirilebilir olmasıdır. Kesitler genişleyebilirler, bölünebilirler.

package main

import "fmt"

func main() {

    // Kesit Oluşturma
    kesit := make([]string, 3)
    fmt.Println("Boş kesit:", kesit)

    // Değer Atama
    kesit[0] = "a"
    kesit[1] = "b"
    kesit[2] = "c"
    fmt.Println("Kesit:", kesit)
    fmt.Println("Boyut:", len(kesit))
    fmt.Println("Kapasite:", cap(kesit))

    // Kesiti Genişletme
    kesit = append(kesit, "d")
    kesit = append(kesit, "e", "f")
    fmt.Println("Yeni Kesit:", kesit)

    // Kesiti Kopyalama
    c := make([]string, len(kesit))
    copy(c, kesit)
    fmt.Println("Kopya Kesit:", c)

    // Kesiti Bölme
    k := kesit[2:5]
    fmt.Println("Kesit Bölme 1:", k)

    k = kesit[:5]
    fmt.Println("Kesit Bölme 2:", k)

    k = kesit[2:]
    fmt.Println("Kesit Bölme 3:", k)

    // Kesit Tanımı ve Değer Atama
    t := []string{"g", "h", "i"}
    fmt.Println("Kesit 2:", t)

    // 2 Boyutlu Kesit
    kesit2 := make([][]int, 3)
    for i := 0; i < 3; i++ {
        boyut := i + 1
        kesit2[i] = make([]int, boyut)
        for j := 0; j < boyut; j++ {
            kesit2[i][j] = i + j
        }
    }
    fmt.Println("2 Boyutlu Kesit: ", kesit2)
}

çalıştır!

Boş kesit: [  ]
Kesit: [a b c]
Boyut: 3
Kapasite: 3
Yeni Kesit: [a b c d e f]
Kopya Kesit: [a b c d e f]
Kesit Bölme 1: [c d e]
Kesit Bölme 2: [a b c d e]
Kesit Bölme 3: [c d e f]
Kesit 2: [g h i]
2 Boyutlu Kesit:  [[0] [1 2] [2 3 4]]

Kesit Oluşturma

    kesit := make([]string, 3)
    fmt.Println("Boş kesit:", kesit)

Kesitler make fonksiyonu ile tür ve eleman sayısı belirtilerek oluşturulur. Örnekte 3 elemanlı []string türünde bir slice oluşturuldu.

Değer Atama

    kesit[0] = "a"
    kesit[1] = "b"
    kesit[2] = "c"
    fmt.Println("Kesit:", kesit)
    fmt.Println("Boyut:", len(kesit))
    fmt.Println("Kapasite:", cap(kesit))

Kesitlere dizilerde olduğu gibi değer atanır. Kesit boyutuna dizide olduğu gibi len() ile bakılabilir. Aynı zamanda kesitin kapasitesine de cap() ile bakabilirsiniz.

Kesiti Genişletme, Değer Ekleme

    kesit = append(kesit, "d")
    kesit = append(kesit, "e", "f")

Kesiti genişletmek için append() fonksiyonu kullanılır. Birden fazla değeri tek seferde ekleyebilirsiniz.

Kesiti Kopyalama

    c := make([]string, len(kesit))
    copy(c, kesit)

Mevcut kesiti copy() fonksiyonu ile kopyalayabilirsiniz. Örnekte önce boş bir kesit olarak c değişkeni oluşturuluyor. Oluşturulan c‘nin eleman sayısı kopyalanacak kesitin sayısıyla eşit olsun diye len() ile belirtiliyor.

Kesiti Bölme

    k := kesit[2:5]

    k = kesit[:5]

    k = kesit[2:]

Kesiti belirli bir elemanından başlayarak kesit[2:5], belirli bir elemanına kadar kesit[:5] veya belirli bir elemanından başlayarak sonuna kadar bölüp yeni değişkene atanabilirsiniz.

Kesit Tanımı ve Değer Atama

    t := []string{"g", "h", "i"}

Kesitler tanımlanırken de değer ataması yapılabilir.

2 Boyutlu Kesit

    kesit2 := make([][]int, 3)
    for i := 0; i < 3; i++ {
        boyut := i + 1
        kesit2[i] = make([]int, boyut)
        for j := 0; j < boyut; j++ {
            kesit2[i][j] = i + j
        }
    }

Kesit 2 boyutlu olarak oluşturulabilir. Yukarıdaki örnekte öncelikle kesit2 adıyla 2 boyutlu kesit oluşturulmaktadır. for döngüsü ile de kesit2‘ye yeni kesitler ve onlara da yeni kesitler eklenerek 2. boyut elde edilmiş olur, Inception 🙂

Kategori: