Sobes.tech
Junior — Middle

Go тилинде new жана make операторлорунын айырмалуулугун түшүндүрө аласызбы?

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 — татаал маалымат структураларын баштапкы кылып, маанини кайтарат.