Ответ
В Go make используется для инициализации встроенных типов данных, которые требуют предварительного выделения памяти.
- Срезы (slices) –
make([]T, len, cap)
Создает срез с указанной длиной и вместимостью. Еслиcapне указан, равенlen.
s := make([]int, 5, 10) // len=5, cap=10
- Мапы (maps) –
make(map[K]V, initialCapacity)
Создает пустую мапу с указанной начальной вместимостью (опционально).
m := make(map[string]int, 100)
- Каналы (channels) –
make(chan T, bufferSize)
Создает канал с буфером указанного размера. ЕслиbufferSize=0(или опущен), канал небуферизованный.
ch := make(chan int, 10)
Важно: make не работает с обычными массивами ([n]T) или структурами – для них используется new или литеральная инициализация.