Maison  >  Article  >  développement back-end  >  ## Quelle est la différence : `new(MyStruct)` et `&MyStruct{}` dans Go ?

## Quelle est la différence : `new(MyStruct)` et `&MyStruct{}` dans Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-25 06:54:29685parcourir

## What's the Difference: `new(MyStruct)` vs. `&MyStruct{}` in Go?

Comprendre le rôle du nouveau dans Go

Contrairement à son apparition dans les constructions de langage primitif, le nouveau trouve son but dans la création de pointeurs. Bien que vous ne puissiez pas spécifier directement les valeurs des primitives avec new, cela devient un outil utile pour allouer de la mémoire aux types de données structurés comme les structures. Dans de tels scénarios, new renvoie un pointeur vers un objet non initialisé, vous permettant de travailler avec ses propriétés ultérieurement.

Différencier new et &

While les deux new(MyStruct ) et &MyStruct{} génèrent un pointeur vers une nouvelle instance de struct, leur utilisation dépend de l'intention du code. Parfois, la concision de &MyStruct{} est préférée, tandis que new(MyStruct) présente explicitement l'intention d'allouer de la mémoire sur le tas.

Autres considérations pour new

Au-delà types et structures primitifs, new n'est pas applicable aux tranches et aux cartes. Au lieu de cela, make([]float, 100) doit être utilisé pour les tranches.

Applications pratiques de new

Étant donné que Go manque de constructeurs intégrés, les développeurs emballent souvent new appels dans des fonctions personnalisées pour initialiser et personnaliser des objets. Cette approche simplifie les processus d'initialisation, permet de masquer les champs privés et facilite l'évolution structurelle. De plus, il offre de la flexibilité en dissociant la création de l'objet de son utilisation, permettant aux développeurs d'apporter des modifications à la structure de la structure sans affecter le code existant.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn