- Katılım
- 7 Ocak 2026
- Mesajlar
- 290
- Tepkime puanı
- 2
- Puanları
- 18
Sabit mi, Esnek mi?
Go'da listelerle çalışırken iki kavram karşımıza çıkar: Array (Dizi) ve Slice (Dilim). Diğer dillerden (Python, JavaScript) gelenler için bu ayrım başta kafa karıştırıcı olabilir ama Go'nun bellek yönetimi için bu ayrım hayati önem taşır.1. Array (Dizi): Katı ve Sabit
Array'lerin boyutu, tipinin bir parçasıdır. [3]int ile [4]int farklı tiplerdir. Bir kere tanımlandığında boyutu asla değiştirilemez.
Kod:
package main
import "fmt"
func main() {// 3 elemanlı sabit bir dizivar notlar [3]intnotlar[0] = 50notlar[1] = 60notlar[2] = 70// notlar[3] = 80 // HATA! Dizi sınırları aşıldı.
fmt.Println(notlar)<br>
}
Array'ler genellikle bellek verimliliği gereken çok özel durumlarda kullanılır. Günlük kodlamada %95 oranında Slice kullanacaksınız.
2. Slice (Dilim): Esnek ve Güçlü
Slice, Array'in üzerine inşa edilmiş dinamik bir penceredir. Boyutu ihtiyaca göre büyüyüp küçülebilir. Tanımlarken köşeli parantezin içi boş bırakılır: []int.Slice Oluşturma ve append:
Kod:
func main() {// Boş bir slice oluşturmavar isimler []string
// Eleman ekleme (append fonksiyonu yeni bir slice döndürür)<br>isimler = append(isimler, "Ali")<br>isimler = append(isimler, "Veli", "Ayşe")<br><br>fmt.Println(isimler) // Çıktı: [Ali Veli Ayşe]<br>fmt.Println("Uzunluk:", len(isimler))<br>
}
make
Performans için, slice'ın tahmini boyutunu biliyorsanız make kullanmak daha iyidir. Bu, bellekte yer ayırır ve sürekli genişletme maliyetinden kurtarır.
Kod:
// Uzunluğu 5, Kapasitesi 10 olan bir slicesayilar := make([]int, 5, 10)