Sobes.tech
Senior

Ko programma izvadīs? 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 AI

Atbilde no AI

Programma parādīs:

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

Skaidrojums:

  • Sākumā x ir tukšs sērija.
  • x pievieno elementus 0, 1, 2.
  • y := append(x, 3) pievieno 3 x sērijai. Ja sērijas ietilpība ir pietiekama, y un x norādīs uz to pašu pamatmasīvu, bet y garums būs lielāks.
  • z := append(x, 4) arī pievieno elementu, bet tā kā y jau ir mainījusi masīvu, pievienojot 4 z, tiek izveidots jauns masīvs, lai novērstu pārrakstīšanu.

Tādējādi, y satur [0 1 2 3], bet z[0 1 2 4].

Lai labāk saprastu, piemērs:

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()
}