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