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)
}
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 🙂