Sobes.tech
Junior — Middle

Lehetséges-e adatolvasási művelet végrehajtása egy olyan szeletből, amelyet előzetesen nem inicializáltak?

sobes.tech MI

Válasz az MI-től

Go-ban a szeletek (slices) olyan szerkezetek, amelyek egy tömbre mutató mutatót, hosszúságot és kapacitást tartalmaznak. Ha egy szelet nincs inicializálva (azaz nil), akkor az olvasási kísérlet pánikot okoz.

Például:

var s []int // nil-szelet
fmt.Println(s[0]) // pánik: futási hiba: index kívül esik a tartományon

Biztonságos olvasáshoz a szeletet inicializálni kell, például make-el vagy meglévő tömb hozzárendelésével:

s := make([]int, 3)
fmt.Println(s[0]) // 0, biztonságos

Ezért nem lehet olvasni egy nem inicializált szeletből — ez futási hibát fog eredményezni.