Junior — Middle
Co se stane při volání metody append a proč vrací nový řez?
sobes.tech AI
Odpověď od AI
V jazyce Go se metoda append používá k přidání prvků do slice. Při volání append se děje následující:
- Pokud má slice dostatečnou kapacitu (capacity), nový prvek se jednoduše přidá do existujícího pole a vrátí se slice ukazující na aktualizovanou část pole.
- Pokud kapacita nestačí, vytvoří se nové pole s navýšenou kapacitou, staré prvky se do něj zkopírují a poté se přidá nový prvek.
Proto append vrací nový slice, protože:
- V případě rozšíření kapacity se vrací slice ukazující na nové pole.
- Pokud je kapacita dostatečná, vrací se slice ukazující na stejnou pole, ale s prodlouženou délkou.
Je důležité vždy přiřadit výsledek append zpět do proměnné, aby nedošlo ke ztrátě odkazu na aktualizovaný slice:
s := []int{1, 2, 3}
s = append(s, 4) // s nyní ukazuje na slice s prvky [1 2 3 4]
Tímto způsobem append vrací nový slice, protože interně může změnit základní pole, a je třeba aktualizovat odkaz na něj.