Sobes.tech
Junior — Middle

Kun je elementen toevoegen aan een slice dat als argument aan een functie is doorgegeven?

sobes.tech AI

Antwoord van AI

Ja, het is mogelijk om elementen toe te voegen aan de slice die aan een functie wordt doorgegeven, maar het is belangrijk om te begrijpen dat in Go een slice een structuur is die een pointer naar een array, een lengte en een capaciteit bevat.

Als je in de functie append gebruikt en het resultaat toewijst aan een lokale variabele, zullen de wijzigingen de oorspronkelijke slice buiten de functie niet beïnvloeden, tenzij je een nieuwe slice retourneert of een pointer naar de slice doorgeeft.

Voorbeeld:

func addElement(s []int) []int {
    s = append(s, 42) // voeg een element toe
    return s
}

func main() {
    s := []int{1, 2, 3}
    s = addElement(s) // moet opnieuw toewijzen
    fmt.Println(s) // [1 2 3 42]
}

Als je de slice binnen de functie wilt wijzigen zonder deze terug te geven, kun je een pointer doorgeven:

func addElementPtr(s *[]int) {
    *s = append(*s, 42)
}

func main() {
    s := []int{1, 2, 3}
    addElementPtr(&s)
    fmt.Println(s) // [1 2 3 42]
}