Sobes.tech
Middle+

Taak: Wat zal de code tonen? ```go package main import "fmt" func main() { a := []int{1, 2, 3, 4, 5} b := a[:2] b = append(b, 100) fmt.Println(a, b) } ```

sobes.tech AI

Antwoord van AI

Code:

package main

import "fmt"

func main() {
    a := []int{1, 2, 3, 4, 5}
    b := a[:2]       // b verwijst naar de eerste twee elementen van a: [1, 2]
    b = append(b, 100) // voeg 100 toe aan de slice b
    fmt.Println(a, b)
}

Analyse:

  • Aanvankelijk is a = [1, 2, 3, 4, 5]
  • b := a[:2] — de slice b bevat [1, 2], en de capaciteit is 5 (van 0 tot het einde van a)
  • append(b, 100) voegt het element 100 toe aan de slice b. Omdat de capaciteit van b uitbreidt zonder nieuwe geheugenallocatie, wordt het element 100 geschreven in a[2], waardoor de oorspronkelijke array a wordt gewijzigd.

Na append:

  • a wordt [1, 2, 100, 4, 5]
  • b wordt [1, 2, 100]

Uitvoer:

[1 2 100 4 5] [1 2 100]

Dat wil zeggen, het element a[2] veranderde van 3 naar 100, omdat b en a een onderliggende array delen.