Junior — Middle
Mis juhtub, kui kutsutakse append meetod ja miks see tagastab uue lõigu?
sobes.tech AI
Vastus AI-lt
Go keeles kasutatakse meetodit append, et lisada elemente viilule (slice). Kui append kutsutakse, toimub järgmist:
- Kui viilu (capacity) maht on piisav, lisatakse uus element lihtsalt olemasolevale massiivile ning tagastatakse viil, mis osutab uuendatud massiivi osale.
- Kui maht ei ole piisav, luuakse uus massiiv suurendatud mahuga, kopeeritakse sinna vanad elemendid ning lisatakse uus element.
Seetõttu tagastab append uue viilu, sest:
- Mahu laiendamise korral tagastatakse viil, mis osutab uuele massiivile.
- Kui maht on piisav, tagastatakse viil, mis osutab samale massiivile, kuid suurema pikkusega.
Oluline on alati append tulemust uuesti muutujale omistada, et mitte kaotada viidet uuendatud viilule:
s := []int{1, 2, 3}
s = append(s, 4) // s nüüd osutab viilule, mille elemendid on [1 2 3 4]
Sel viisil tagastab append uue viilu, sest sisemiselt võib see muuta põhimasivi ning on vaja uuendada viite sellele.