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 — ინიციალიზებს რთულ მონაცემთა სტრუქტურებს და აბრუნებს მნიშვნელობას.