Junior — Middle
Bir fonksiyona argüman olarak geçirilen dilime öğeler eklemek mümkün mü?
sobes.tech yapay zeka
AI'dan gelen yanıt
Evet, fonksiyona geçirilen dilimlere öğeler eklemek mümkündür, ancak Go'da dilim (slice) bir diziye işaretçi, uzunluk ve kapasite içeren bir yapıdır, bu yüzden bunu anlamak önemlidir.
Fonksiyon içinde append kullanıp sonucu yerel bir değişkene atarsanız, değişiklikler fonksiyon dışında orijinal dilimi etkilemez, yeni bir dilim döndürmediğiniz veya dilime işaretçi geçirmediğiniz sürece.
Örnek:
func addElement(s []int) []int {
s = append(s, 42) // öğe ekleme
return s
}
func main() {
s := []int{1, 2, 3}
s = addElement(s) // tekrar atama yapmak gerek
fmt.Println(s) // [1 2 3 42]
}
Dilim üzerinde değişiklik yapmak istiyorsanız ve sonucu döndürmek istemiyorsanız, işaretçi geçirebilirsiniz:
func addElementPtr(s *[]int) {
*s = append(*s, 42)
}
func main() {
s := []int{1, 2, 3}
addElementPtr(&s)
fmt.Println(s) // [1 2 3 42]
}