Sobes.tech
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:

  1. Kui viilu (capacity) maht on piisav, lisatakse uus element lihtsalt olemasolevale massiivile ning tagastatakse viil, mis osutab uuendatud massiivi osale.
  2. 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.