Назад к вопросам
Wildberries
Junior — Middle
79
Можете объяснить механизмы внутренней работы функции Make?
Компании, где спрашивали
Ответ от нейросети
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, который просто выделяет память без инициализации.