Sobes.tech
Back to questions
Junior — Middle
109

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

Companies where asked
ГазпромГазпром
ГазпромбанкГазпромбанк

Answer from AI

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 — инициализирует сложные структуры данных и возвращает значение.