Junior — Middle
Môžete vysvetliť rozdiely medzi operátormi new a make v jazyku Go?
sobes.tech AI
Odpoveď od AI
V jazyku Go slúžia operátory new a make na alokáciu pamäte, ale používajú sa na rôzne typy a majú rôzne účely:
-
new(T) alokuje pamäť pre typ T, inicializuje ju nulovou hodnotou a vracia ukazovateľ *T. Používa sa pre všetky typy, ale vracia ukazovateľ.
-
make(T, args...) sa používa iba na inicializáciu rezov (slice), máp (map) a kanálov (chan). Vracia inicializovanú hodnotu typu T (nie ukazovateľ).
Príklad:
p := new(int) // p má typ *int, ukazuje na 0
s := make([]int, 5) // s je rez dĺžky 5, pripravený na použitie
m := make(map[string]int) // inicializovaná mapa
Zhrnutie:
- new — alokuje pamäť a vracia ukazovateľ.
- make — inicializuje zložité dátové štruktúry a vracia hodnotu.