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