Sobes.tech
Middle+

Sarcină: Ce va afișa codul? ```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

Răspuns de la AI

Cod:

package main

import "fmt"

func main() {
    a := []int{1, 2, 3, 4, 5}
    b := a[:2]       // b face referire la primele două elemente ale lui a: [1, 2]
    b = append(b, 100) // adăugăm 100 la slice-ul b
    fmt.Println(a, b)
}

Analiză:

  • Inițial, a = [1, 2, 3, 4, 5]
  • b := a[:2] — slice-ul b conține [1, 2], iar capacitatea sa este 5 (de la 0 până la sfârșitul lui a)
  • append(b, 100) adaugă elementul 100 la slice-ul b. Deoarece capacitatea lui b permite extinderea fără alocare de memorie nouă, elementul 100 este scris în a[2], modificând array-ul original a.

După append:

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

Ieșire:

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

Adică, elementul a[2] s-a schimbat de la 3 la 100, deoarece b și a împart un array subiacente.