Sobes.tech
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]
}