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.