Sobes.tech
Junior — Middle

Може ли да се извърши операция по четене на данни от срез, който не е бил предварително инициализиран?

sobes.tech AI

Отговор от AI

В Go, срезовете (slices) са структури, които съдържат указател към масив, дължина и капацитет. Ако срезът не е инициализиран (т.е. равен на nil), опитът за четене от него ще доведе до паника.

Например:

var s []int // nil-срез
fmt.Println(s[0]) // паника: грешка при изпълнение: индекс извън обхвата

За безопасно четене от срез, той трябва да бъде инициализиран, например с make или като му се присвои съществуващ масив:

s := make([]int, 3)
fmt.Println(s[0]) // 0, безопасно

Следователно, от неинициализиран срез не може да се чете — това ще предизвика грешка при изпълнение.