Sobes.tech
Junior — Middle

Vai jūs varat izskaidrot atšķirības starp operatoriem new un make Go valodā?

sobes.tech AI

Atbilde no AI

Go valodā operatori new un make tiek izmantoti atmiņas piešķiršanai, bet tie tiek piemēroti dažādiem tipiem un tiem ir dažādi mērķi:

  • new(T) piešķir atmiņu tipam T, to inicializē ar nulles vērtību un atgriež *T norādītāju. To izmanto visiem tipiem, bet tas atgriež norādītāju.

  • make(T, args...) tiek izmantots tikai sagriezienu (slice), kartes (map) un kanālu (chan) inicializācijai. Tas atgriež inicializētu T tipa vērtību (ne norādītāju).

Piemērs:

p := new(int)       // p ir *int tips, norāda uz 0
s := make([]int, 5) // s ir sagrieziena ar garumu 5, gatavs lietošanai
m := make(map[string]int) // inicializēta karte

Kopsavilkums:

  • new — piešķir atmiņu un atgriež norādītāju.
  • make — inicializē sarežģītas datu struktūras un atgriež vērtību.