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

Можете объяснить механизмы внутренней работы функции Make?

Компании, где спрашивали
WildberriesWildberries

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

sobes.tech AI

В Go функция make используется для создания и инициализации срезов (slice), карт (map) и каналов (channel). Она выделяет память и возвращает инициализированный объект нужного типа.

Внутренне make:

  • Выделяет память под структуру данных и внутренние буферы.
  • Инициализирует служебные поля (например, длину и емкость среза).
  • Для срезов выделяется массив заданной емкости, возвращается срез с длиной и емкостью.
  • Для карт создается хэш-таблица с начальным размером.
  • Для каналов создается буфер с указанной емкостью.

Пример:

s := make([]int, 5, 10) // срез длиной 5, емкостью 10
m := make(map[string]int, 10) // карта с начальной емкостью 10
ch := make(chan int, 5) // канал с буфером на 5 элементов

Таким образом, make — это встроенный механизм для создания и инициализации сложных типов данных, отличающийся от new, который просто выделяет память без инициализации.