Как отличить способы создания среза в Go с использованием var, make и присваивания по индексам или через append?

В Go срезы можно создавать разными способами, которые отличаются по инициализации и выделению памяти:

Короткий ответ

Что ответить на собеседовании

В Go срезы можно создавать разными способами, которые отличаются по инициализации и выделению памяти:

Подробный разбор

Ответ с пояснениями

В Go срезы можно создавать разными способами, которые отличаются по инициализации и выделению памяти:

  1. Объявление с помощью var — создаёт nil-срез, который не указывает на массив и имеет длину и ёмкость 0.
var s []int // nil-срез
  1. Создание среза через make — выделяет массив заданной длины и ёмкости, возвращает срез, указывающий на этот массив.
s := make([]int, 5) // срез длины 5, заполнен нулями
  1. Присваивание по индексам — возможно только если срез уже инициализирован и имеет достаточную длину.
  2. Добавление элементов через append — добавляет элементы в срез, при необходимости увеличивает ёмкость и выделяет новый массив.
s = append(s, 10) // добавляет элемент 10 в срез

Таким образом, var создаёт пустой nil-срез, make — срез с выделенной памятью, присваивание по индексам требует существующей длины, а append динамически расширяет срез.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее