Junior — Middle
Можете ли да обясните разликите между операторите new и make в езика Go?
sobes.tech AI
Отговор от 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 — инициализира сложни структури от данни и връща стойност.