Sobes.tech
Junior — Middle

Hoe kan de grootte van het segment dat aan een functie wordt doorgegeven in een programmeertaal worden vergroot?

sobes.tech AI

Antwoord van AI

In Go is een slice een structuur die een pointer naar een array, een lengte en een capaciteit bevat. Als je de grootte van een slice dat aan een functie wordt doorgegeven wilt vergroten, kun je het volgende doen:

  • Geef de slice door op waarde, maar binnen de functie een nieuwe slice maken met een grotere lengte of capaciteit met behulp van de append-functie.
  • Als je de slice zelf wilt wijzigen (bijvoorbeeld de lengte vergroten) en wilt dat de wijzigingen zichtbaar zijn buiten de functie, kun je een pointer naar de slice doorgeven (*[]T), zodat je binnen de functie de slice kunt herdefiniëren.

Voorbeeld van het vergroten van een slice binnen een functie met het retourneren van een nieuwe slice:

func extendSlice(s []int, n int) []int {
    // Voeg n null-elementen toe
    s = append(s, make([]int, n)...) 
    return s
}

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

Als de functie de slice zonder terugkeer moet wijzigen, kun je een pointer gebruiken:

func extendSlicePtr(s *[]int, n int) {
    *s = append(*s, make([]int, n)...) 
}

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

Op deze manier, om de grootte van de slice binnen een functie te vergroten, moet je of een nieuwe slice retourneren of een pointer naar de slice doorgeven.