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