Junior — Middle
Jaké akce jsou povolené při práci se slice v Go, pokud nebyl výslovně inicializován?
sobes.tech AI
Odpověď od AI
V jazyce Go, pokud řez (slice) nebyl výslovně inicializován (tedy má hodnotu nil), lze s ním provádět následující operace:
- Kontrolovat, zda je
nil(napříkladif slice == nil), což je užitečné pro určení, zda byl řez inicializován. - Získat délku a kapacitu pomocí
len(slice)acap(slice). Pronil-řez jsou délka i kapacita 0. - Použít operátor
appendpro přidání prvků.appendautomaticky vytvoří nový řez s přidělenou pamětí, pokud je původní řeznil.
Nelze však přistupovat k prvkům řezů podle indexu, pokud je nil nebo prázdný, protože to způsobí panic.
Příklad:
var s []int // s == nil
fmt.Println(s == nil) // true
fmt.Println(len(s)) // 0
s = append(s, 1) // nyní je s inicializován a obsahuje [1]