Sobes.tech
Junior — Middle

Co se stane s délkou a kapacitou řezu, pokud do něj přidáme 10 prvků, když je původně prázdný?

sobes.tech AI

Odpověď od AI

Pokud máte v Go prázdný řez (délka a kapacita jsou 0) a přidáte do něj 10 prvků pomocí funkce append, pak:

  • Délka řez je 10 — počet přidaných prvků.
  • Kapacita řez bude automaticky zvětšena, obvykle s rezervou, aby se zabránilo častým přesunům paměti. Přesná kapacita závisí na implementaci, ale často bude 16 nebo více, aby pojala nové prvky a měla rezervu pro budoucí přidání.

Příklad:

var s []int // prázdný řez
s = append(s, make([]int, 10)...) // přidáme 10 prvků
fmt.Println(len(s)) // 10
fmt.Println(cap(s)) // >=10, obvykle 16 nebo 20

Tímto způsobem se kapacita dynamicky zvětšuje, aby efektivně spravovala paměť při růstu řezů.