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