Sobes.tech
Junior — Middle

Lze provést operaci čtení dat z řezu, který nebyl předem inicializován?

sobes.tech AI

Odpověď od AI

V jazyce Go jsou řezy (slices) struktury, které obsahují ukazatel na pole, délku a kapacitu. Pokud řez nebyl inicializován (tedy je roven nil), pokus o jeho čtení povede k panice.

Například:

var s []int // nil-řez
fmt.Println(s[0]) // panic: chyba za běhu: index mimo rozsah

Pro bezpečné čtení z řezu je třeba jej inicializovat, například pomocí make nebo přiřazením existujícího pole:

s := make([]int, 3)
fmt.Println(s[0]) // 0, bezpečné

Proto nelze číst z neinicializovaného řezu — to způsobí chybu za běhu.