CodeBlanks Logo Icon CodeBlanks

append ile ekleme

append fonksiyonuyla slice'a eleman eklemeyi öğrenirsin.

append ile ekleme

append dilimin sonuna bir ya da daha çok eleman ekler ve yeni dilimi döndürür; sonucu mutlaka bir değişkene atamak gerekir:

var sepet []string
sepet = append(sepet, "elma")
sepet = append(sepet, "armut", "kiraz")
diger := []string{"muz", "üzüm"}
sepet = append(sepet, diger...)
fmt.Println(len(sepet))  // 5

Kapasite yetmezse append daha büyük yeni bir dizi ayırır ve elemanları oraya taşır.

Kapasiteyi önceden ayırmak

Kaç eleman ekleneceği biliniyorsa make([]T, 0, n) ile kapasite ayırmak tekrar tekrar büyütme kopyalarını önler:

kareler := make([]int, 0, 5)
for i := 1; i <= 5; i++ {
    kareler = append(kareler, i*i)
}
fmt.Println(kareler, cap(kareler))  // [1 4 9 16 25] 5

make([]int, 5) ise uzunluğu 5 olan, sıfırlarla dolu bir dilim yapar; ona append etmek 6. elemandan başlar.

Uygulama Çift sayılar

1'den 10'a kadar çift sayıları make([]int, 0, 5) ile başlattığın bir dilime append ile ekle. Dilimi ve kapasitesini yazdır.

Başlangıç kodu

main.go
package main

import "fmt"

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
package main

import "fmt"

func main() {
    ciftler := make([]int, 0, 5)
    for i := 1; i <= 10; i++ {
        if i%2 == 0 {
            ciftler = append(ciftler, i)
        }
    }
    fmt.Println(ciftler, cap(ciftler))
}

Beklenen çıktı

[2 4 6 8 10] 5

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 <code>append(s, 4)</code> yazıp sonucu atamazsan ne olur?

  • Derleme hatası: sonuç kullanılmadı Doğru cevap
  • s'ye 4 eklenir
  • Hiçbir şey, sessizce geçer
  • panic

Açıklama: append bir değer döndürür ve Go kullanılmayan append sonucunu hata sayar; doğru yazım s = append(s, 4).

2 Dilimi ekle

Soru
a = append(a, b____)
Cevap
a = append(a, b...)

Açıklama: b... ikinci dilimin elemanlarını tek tek append'e verir.

3 Kod ve sonuç

Kavram Anlamı
append(nil, 1) [1]
append([]int{1}, 2, 3) [1 2 3]
make([]int, 0, 5) len 0, cap 5
append(make([]int, 2), 7) [0 0 7]

Başlangıç bölümündeki tüm dersler