Sobes.tech
Junior — Middle

Co se stane, pokud vytvoříte slice s nulovou hodnotou a jaké operace jsou s ním povoleny?

sobes.tech AI

Odpověď od AI

V Go je řez s nulovou hodnotou nil řez. Neukazuje na žádný pole a má délku a kapacitu rovnu nule.

Přípustné operace s takovým řezem:

  • Získání délky a kapacity (len(slice) == 0, cap(slice) == 0)
  • Iterace přes řez (cyklus se prostě neprovede)
  • Přidání prvků pomocí append, což vytvoří nový řez s přidělenou pamětí

Příklad:

var s []int // nil řez
fmt.Println(s == nil) // true
fmt.Println(len(s))   // 0
s = append(s, 1)      // nyní s není nil, obsahuje jeden prvek

Nelze přistupovat k prvkům podle indexu, protože řez je prázdný a to způsobí panic.