Junior — Middle
Šta se dešava kada se pozove metoda append i zašto ona vraća novi rez?
sobes.tech АИ
Одговор од АИ
U Go jeziku, metoda append se koristi za dodavanje elemenata u slice. Kada se pozove append, dešava se sledeće:
- Ako kapacitet (capacity) slice-a bude dovoljan, novi element se jednostavno dodaje postojećem nizu, i vraća se slice koji pokazuje na ažurirani deo niza.
- Ako kapacitet nije dovoljan, kreira se novi niz sa povećanim kapacitetom, stari elementi se kopiraju u njega, i zatim se dodaje novi element.
Zato append vraća novi slice, jer:
- U slučaju proširenja kapaciteta, vraća se slice koji pokazuje na novi niz.
- Ako je kapacitet dovoljan, vraća se slice koji pokazuje na isti niz, ali sa povećanom dužinom.
Uvek je važno da rezultat append ponovo dodelite promenljivoj, kako ne biste izgubili referencu na ažurirani slice:
s := []int{1, 2, 3}
s = append(s, 4) // s sada pokazuje na slice sa elementima [1 2 3 4]
Na ovaj način, append vraća novi slice jer interno može da promeni osnovni niz, i potrebno je da ažurirate referencu na njega.