Middle
Bir fonksiyon içinde bir dilimlere çok fazla öğe eklerseniz ne olur?
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. Eğer bir dilime çok fazla öğe eklerseniz ve mevcut kapasitesini aşarsanız, Go otomatik olarak daha büyük bir yeni dizi ayırır ve verileri oraya kopyalar.
Bu, öğeler eklerken dilimin yeniden tahsis edilebileceği anlamına gelir, bu da ek zaman ve bellek maliyetlerine yol açar. Bir fonksiyon içinde dilime öğeler eklerken ve yeni bir dilim döndürmeden değişiklikleri kaydetmek istiyorsanız, dilim değerle geçirilir (yapı kopyalanır, ancak veriler değil).
Örnek:
func appendElements(s []int) {
for i := 0; i < 1000; i++ {
s = append(s, i) // kapasite aşıldığında yeni bir dilim oluşturulur
}
}
// Değişikliklerin kaybolmaması için dilimi döndürmek gerekir:
func appendElementsCorrect(s []int) []int {
for i := 0; i < 1000; i++ {
s = append(s, i)
}
return s
}
Bu nedenle, çok sayıda öğe eklerken, bellek yeniden tahsis edilmesini dikkate almak ve döndürülen dilim değerleriyle doğru çalışmak önemlidir.