Sobes.tech
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říklad if slice == nil), což je užitečné pro určení, zda byl řez inicializován.
  • Získat délku a kapacitu pomocí len(slice) a cap(slice). Pro nil-řez jsou délka i kapacita 0.
  • Použít operátor append pro přidání prvků. append automaticky vytvoří nový řez s přidělenou pamětí, pokud je původní řez nil.

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]