Sobes.tech
Junior — Middle

Je možné vykonať operáciu čítania údajov zo segmentu, ktorý nebol predtým inicializovaný?

sobes.tech AI

Odpoveď od AI

V jazyku Go sú rezy (slices) štruktúry, ktoré obsahujú ukazovateľ na pole, dĺžku a kapacitu. Ak rez nebol inicializovaný (t.j. je rovný nil), pokus o jeho čítanie povedie k panike.

Napríklad:

var s []int // nil-rez
fmt.Println(s[0]) // panic: chyba za behu: index mimo rozsah

Pre bezpečné čítanie z rezu je potrebné ho inicializovať, napríklad pomocou make alebo priradením existujúceho poľa:

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

Preto nie je možné čítať z neinicializovaného rezu — spôsobí to chybu za behu.