Back to questions
Junior — Middle
83
Как отличить способы создания среза в Go с использованием var, make и присваивания по индексам или через append?
Answer from AI
sobes.tech AI
В Go срезы можно создавать разными способами, которые отличаются по инициализации и выделению памяти:
- Объявление с помощью
var— создаёт nil-срез, который не указывает на массив и имеет длину и ёмкость 0.
var s []int // nil-срез
- Создание среза через
make— выделяет массив заданной длины и ёмкости, возвращает срез, указывающий на этот массив.
s := make([]int, 5) // срез длины 5, заполнен нулями
-
Присваивание по индексам — возможно только если срез уже инициализирован и имеет достаточную длину.
-
Добавление элементов через
append— добавляет элементы в срез, при необходимости увеличивает ёмкость и выделяет новый массив.
s = append(s, 10) // добавляет элемент 10 в срез
Таким образом, var создаёт пустой nil-срез, make — срез с выделенной памятью, присваивание по индексам требует существующей длины, а append динамически расширяет срез.