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

Можете объяснить различия между операторами new и make в языке Go?

Компании, где спрашивали
ГазпромГазпром
ГазпромбанкГазпромбанк

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

sobes.tech AI

В Go операторы new и make служат для выделения памяти, но применяются к разным типам и имеют разные цели:

  • new(T) выделяет память под тип T, инициализирует её нулевым значением и возвращает указатель *T. Используется для всех типов, но возвращает указатель.

  • make(T, args...) используется только для инициализации срезов, карт (map) и каналов (chan). Возвращает инициализированное значение типа T (не указатель).

Пример:

p := new(int)       // p имеет тип *int, указывает на 0
s := make([]int, 5) // s — срез длины 5, готов к использованию
m := make(map[string]int) // инициализированная карта

Итого:

  • new — выделяет память и возвращает указатель.
  • make — инициализирует сложные структуры данных и возвращает значение.