Sobes.tech
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 — инициализира сложни структури от данни и връща стойност.