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.