append ile ekleme
- Go kursu
- Başlangıç
- Ders 43/90
- 4 dk
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)) // 5Kapasite 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] 5make([]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
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
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
a = append(a, b____)
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] |