Junior — Middle
V jakých situacích v programovacím jazyce dochází k automatickému zvětšení velikosti dynamického pole (slice)?
sobes.tech AI
Odpověď od AI
V jazyce Go je řez (slice) struktura, která obsahuje ukazatel na pole, délku a kapacitu. Velikost řezu se automaticky zvětšuje, když přidáváte prvky pomocí funkce append, a aktuální délka řezu dosáhne jeho kapacity.
V tomto okamžiku je alokováno nové pole s větší kapacitou (obvykle dvojnásobnou předchozí), staré prvky jsou zkopírovány do nového pole a ukazatel řezu je aktualizován na toto nové pole. To umožňuje řezu dynamicky růst s přidáváním prvků.
Příklad:
s := make([]int, 0, 2) // délka 0, kapacita 2
s = append(s, 1) // délka 1, kapacita 2
s = append(s, 2) // délka 2, kapacita 2
s = append(s, 3) // délka 3, kapacita zvýšena, například na 4
Tímto způsobem se velikost automaticky zvětšuje při přidávání prvků, když délka dosáhne kapacity řezu.