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 — ինիցիալիզացնում է բարդ տվյալների կառուցվածքները և վերադարձնում արժեք: