Junior — Middle
Kunt u de verschillen tussen de operators new en make in de Go-taal uitleggen?
sobes.tech AI
Antwoord van AI
In Go dienen de operators new en make om geheugen te alloceren, maar ze worden toegepast op verschillende typen en hebben verschillende doelen:
-
new(T) allocatieert geheugen voor het type T, initialiseert het met de nulwaarde en geeft een *T pointer terug. Wordt gebruikt voor alle typen, maar geeft een pointer terug.
-
make(T, args...) wordt alleen gebruikt voor het initialiseren van slices, maps (kaarten) en kanalen (chan). Geeft een geïnitialiseerde waarde van het type T terug (geen pointer).
Voorbeeld:
p := new(int) // p is van type *int, wijst naar 0
s := make([]int, 5) // s is een slice van lengte 5, klaar voor gebruik
m := make(map[string]int) // geïnitialiseerde kaart
Samenvatting:
- new — allocatieert geheugen en geeft een pointer terug.
- make — initialiseert complexe datastructuren en geeft de waarde terug.