Senior
Mit fog a program kiírni? 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 MI
Válasz az MI-től
A program a következőt fogja kiírni:
[0 1 2 3] [0 1 2 4]
Magyarázat:
- Kezdetben az
xegy üres szelet. - Az
x-hez hozzáadódnak az 0, 1, 2 elemek. y := append(x, 3)hozzáadja a 3-at azxszelethez. Ha a szelet kapacitása elegendő, akkor ayés azxugyanarra a mögöttes tömbre mutatnak, de ayhossza nagyobb lesz.- A
z := append(x, 4)szintén hozzáad egy elemet, de mivel aymár módosította a tömböt, a 4 hozzáadásakor új tömb jön létre, hogy elkerüljük a felülírást.
Így a y [0 1 2 3], a z pedig [0 1 2 4] lesz.
Példa a jobb megértéshez:
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()
}