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, безопасно
Следователно, от неинициализиран срез не може да се чете — това ще предизвика грешка при изпълнение.