Diziler ve Slice'lar: Go'da Dinamik Listelerle Çalışmak

  • Konbuyu başlatan Konbuyu başlatan irfo
  • Başlangıç tarihi Başlangıç tarihi

irfo

Moderatör
Top Poster Of Month
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)

Sonuç​

Array'ler donanıma yakındır, Slice'lar ise geliştiriciye yakındır. Listelerle çalışırken varsayılan tercihiniz her zaman Slice olsun.
 
Geri
Üst