Sobes.tech
Junior — Middle

Hoe wordt een slice doorgegeven aan een functie in een programmeertaal?

sobes.tech AI

Antwoord van AI

In Go wordt een slice door waarde aan een functie doorgegeven, maar de slice bevat een pointer naar een array, evenals de lengte en capaciteit. Dit betekent dat bij het doorgeven van een slice aan een functie, de structuur van de slice wordt gekopieerd, maar niet de gegevens van de array waarnaar het wijst.

Daarom worden wijzigingen aan de elementen van de slice binnen de functie weerspiegeld in de oorspronkelijke array, maar het wijzigen van de slice zelf (bijvoorbeeld door een nieuwe slice toe te wijzen) heeft geen invloed op de externe slice.

Voorbeeld:

package main
import "fmt"

func modifySlice(s []int) {
    s[0] = 100       // wijzigt het element van de oorspronkelijke array
    s = append(s, 200) // wijzigt de lokale slice, de externe wordt niet beïnvloed
}

func main() {
    s := []int{1, 2, 3}
    modifySlice(s)
    fmt.Println(s) // Print: [100 2 3]
}

Op deze manier wordt de slice door waarde doorgegeven, maar dankzij de interne pointer zijn wijzigingen aan de elementen zichtbaar buiten de functie.