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.