Senior
Čo vypíše program? 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
Odpoveď od AI
Program zobrazí:
[0 1 2 3] [0 1 2 4]
Vysvetlenie:
- Na začiatku je
xprázdny rez. - Pridajú sa prvky 0, 1, 2 do
x. y := append(x, 3)pridá 3 do rezux. Ak je kapacita rezu dostatočná,yaxbudú odkazovať na rovnaký podkladový poľ, ale dĺžkaybude väčšia.z := append(x, 4)tiež pridá prvok, ale pretožeyuž zmenilo pole, pri pridávaní 4 dozsa vytvorí nové pole, aby sa zabránilo prepísaniu.
Takže, y obsahuje [0 1 2 3], a z [0 1 2 4].
Príklad pre lepšie pochopenie:
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()
}