Senior
Bir dilimle çalışıyorsam, onu fonksiyon parametresi olarak alıp onunla bir şeyler yapıp fonksiyondan sonra onunla devam ediyorsam — neyi hatırlamalıyım? Dışarıdan hangi değişiklikleri göremeyiz?
sobes.tech yapay zeka
AI'dan gelen yanıt
Go dilinde, bir dilim (slice), bir diziye işaret eden bir gösterici, uzunluk ve kapasite içeren bir yapıdır. Bir fonksiyona bir dilim geçtiğinizde, sadece bu yapı (gösterici, uzunluk, kapasite) kopyalanır, dizinin kendisi değil.
Önemli olanlar:
- Fonksiyon içindeki dilim öğelerinde yapılan değişiklikler (örneğin,
s[0] = 10) dışarıdan görülebilir, çünkü aynı diziye işaret ederler. - Dilimin kendisinin (örneğin, yeni bir dilim atama
s = append(s, 5)) yapılan değişiklikler, fonksiyon dışındaki dilimi etkilemez, çünkü sadece yapı kopyalanır.
Örnek:
func modify(s []int) {
s[0] = 100 // dizinin öğesini değiştirecek — dışarıdan görülecek
s = append(s, 200) // yerel dilimi kopyasını değiştirir — dışarıdan görünmez
}
s := []int{1, 2, 3}
modify(s)
fmt.Println(s) // [100 2 3] yazdırır, 200 eklenmesi yansımayacak
Özetle, dilim öğelerindeki değişiklikler dışarıdan görünür, uzunluk veya kapasite değişiklikleri (append, dilimler aracılığıyla) ise görünmez, eğer yeni bir dilim döndürülmez veya gösterici geçilmezse.