Sobes.tech
Senior

Šta će program prikazati? func a() { x := []int{} x = append(x, 0) x = append(x, 1) x = append(x, 2) y := append(x, 3) z := append(x, 4) fmt.Println(y, z) } func main() { a() }

sobes.tech АИ

Одговор од АИ

Program će prikazati:

[0 1 2 3] [0 1 2 4]

Objašnjenje:

  • U početku je x prazan rez.
  • Dodaju se elementi 0, 1, 2 u x.
  • y := append(x, 3) dodaje 3 u rez x. Ako je kapacitet rezova dovoljan, y i x će pokazivati na isti podrazumevani niz, ali dužina y će biti veća.
  • z := append(x, 4) takođe dodaje element, ali pošto je y već izmenio niz, pri dodavanju 4 u z se kreira novi niz da bi se izbeglo prepisivanje.

Tako, y sadrži [0 1 2 3], a z [0 1 2 4].

Primer za bolje razumevanje:

func a() {
    x := []int{}
    x = append(x, 0)
    x = append(x, 1)
    x = append(x, 2)
    y := append(x, 3)
    z := append(x, 4)
    fmt.Println(y, z)
}

func main() {
    a()
}