Sobes.tech
Senior

// Vraag 4. Wat wordt er op het scherm weergegeven package main import "fmt" func subis(is []int) []int { return append(is, 5) } func main() { is := []int{1, 2, 3, 4} subis(is[2:3]) fmt.Println(is) }

sobes.tech AI

Antwoord van AI

In deze code wordt een slice is gemaakt met de elementen [1, 2, 3, 4]. Vervolgens wordt de functie subis aangeroepen met het argument is[2:3], een slice die alleen het element 3 bevat.

De functie subis retourneert een nieuwe slice, verkregen door het element 5 toe te voegen aan de meegegeven slice. Het resultaat van de aanroep van subis wordt echter nergens opgeslagen, dus de oorspronkelijke slice is verandert niet.

De uitvoer van het programma zal zijn:

[1 2 3 4]

Uitleg:

  • Slices in Go zijn structuren die een pointer naar een array, een lengte en een capaciteit bevatten.
  • is[2:3] maakt een nieuwe slice van lengte 1, die wijst naar het element 3 in de array.
  • append kan de originele array wijzigen als er voldoende capaciteit is, maar omdat het resultaat niet wordt toegekend, worden de wijzigingen niet opgeslagen.
  • De oorspronkelijke slice is blijft ongewijzigd.