Sobes.tech
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.