Sobes.tech
Back to questions
Junior — Middle
83

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

Answer from AI

sobes.tech AI

В 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 динамически расширяет срез.