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 — сохторҳои мураккаби додаҳоро оғоз мекунад ва арзишро бармегардонад.