Sobes.tech
Junior — Middle

Pouvez-vous expliquer les différences entre les opérateurs new et make en langage Go?

sobes.tech IA

Réponse de l'IA

En Go, les opérateurs new et make servent à allouer de la mémoire, mais s'appliquent à différents types et ont des objectifs différents :

  • new(T) alloue de la mémoire pour le type T, l'initialise à la valeur zéro et retourne un pointeur *T. Utilisé pour tous les types, mais retourne un pointeur.

  • make(T, args...) est utilisé uniquement pour initialiser des slices, des maps (map) et des channels (chan). Retourne une valeur initialisée du type T (pas un pointeur).

Exemple :

p := new(int)       // p est de type *int, pointe vers 0
s := make([]int, 5) // s est un slice de longueur 5, prêt à l'emploi
m := make(map[string]int) // map initialisée

En résumé :

  • new — alloue de la mémoire et retourne un pointeur.
  • make — initialise des structures de données complexes et retourne la valeur.