Junior — Middle
Jaké je maximální počet prvků, které lze přidat pomocí metody append k předanému slice bez vzniku chyb nebo změn v původních datech?
sobes.tech AI
Odpověď od AI
V jazyce Go metoda append přidává prvky do slice, a pokud kapacita (capacity) původního slice umožňuje, přidání proběhne bez alokace nové paměti a bez změny původního pole. Maximální počet prvků, které lze přidat bez přerozdělení paměti, je rozdíl mezi kapacitou slice a jeho aktuální délkou.
Například, pokud má slice s délku 3 a kapacitu 5, lze přidat maximálně 2 prvky bez alokace nové paměti.
s := make([]int, 3, 5) // délka 3, kapacita 5
s = append(s, 1, 2) // přidáváme 2 prvky
Pokud přidáme více prvků, než je volné místo v kapacitě, Go vytvoří nový pole, zkopíruje data a vrátí nový slice — původní pole zůstane nezměněno, ale slice bude ukazovat na nové pole.
Maximální počet prvků, které lze přidat bez chyb a bez změny původních dat, je cap(s) - len(s).