Что будет в переменной, если объявить slice, но не инициализировать его

«Что будет в переменной, если объявить slice, но не инициализировать его» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

var s []int

Переменная s будет иметь значение nil. Это нулевое значение для slice в Go. Проверить можно так:

if s == nil {
    fmt.Println("s is nil") // Выведет это
}

Важно: nil slice ведёт себя как пустой slice при использовании len() и append(), но не выделяет память под массив.

fmt.Println(len(s)) // 0
s = append(s, 1)    // Работает, создаст новый массив