Sobes.tech
Назад к вопросам
Junior — Middle
83

Какое значение хранится в срезе, если он был определён, но не создан явно при помощи инициализации?

Компании, где спрашивали
ГазпромбанкГазпромбанк

Ответ от нейросети

sobes.tech AI

Если срез (slice) в Go объявлен, но не инициализирован явно (например, var s []int), то он имеет значение nil. Такой срез не указывает на какой-либо массив и его длина и ёмкость равны нулю.

Это отличается от пустого среза, который создаётся, например, так: s := []int{} — он не равен nil, но тоже имеет длину 0.

Пример:

var s []int
fmt.Println(s == nil) // true
fmt.Println(len(s))    // 0

s = []int{}
fmt.Println(s == nil) // false
fmt.Println(len(s))    // 0

Таким образом, необъявленный явно срез хранит значение nil.