Maison > développement back-end > Golang > le corps du texte

Découvrez si Golang utilise new()

PHPz
Libérer: 2023-04-23 10:46:52
original
504 Les gens l'ont consulté

Le mécanisme de gestion de la mémoire de Golang est différent des autres langages de programmation. Il utilise un mécanisme de collecte automatique des déchets (Automatic Garbage Collection). Ce mécanisme empêche les programmeurs de prêter trop d'attention à des problèmes tels que l'allocation de mémoire, la copie et la libération, ce qui leur permet de se concentrer davantage sur l'écriture de code de haute qualité.

Cependant, lors du développement officiel, nous devons encore faire un bon travail de gestion de la mémoire afin de mieux contrôler et optimiser les performances du programme. Golang fournit de nombreuses fonctions de gestion de la mémoire, telles que new() et make(). Aujourd'hui, nous verrons si l'utilisation de new() dans Golang est définitivement un choix judicieux.

Tout d’abord, jetons un coup d’œil à la fonction new(). Dans Golang, la fonction new() est utilisée pour allouer de la mémoire et renvoie un pointeur vers une valeur zéro de type nouvellement allouée. Dans l'exemple suivant, nous utilisons la fonction new() pour créer un pointeur p pointant vers un type int et l'attribuons à nil :

var p *int
p = new(int)
Copier après la connexion

Ici, la fonction new() crée un pointeur vers une valeur de type int et l'initialise à 0, puis renvoie ce pointeur p. L'utilisation de la fonction new() pour l'allocation de mémoire est l'une des méthodes couramment utilisées dans Golang.

Cependant, la fonction new() efface uniquement la mémoire allouée (valeur zéro) et ne parvient pas à l'initialiser. Si nous voulons initialiser la mémoire nouvellement allouée à une valeur nulle, nous devons écrire du code supplémentaire. Contrairement à cela, la fonction make() initialise la mémoire lors de son allocation. Lorsque nous devons créer des structures de données avec des types internes tels que des tranches, des tables de hachage ou des canaux, nous pouvons utiliser la fonction make().

De plus, Golang nous fournit des instructions d'expression pour simplifier l'utilisation de la fonction new(), qui est l'opérateur de référence &. Grâce à l'opérateur de référence &, nous pouvons directement initialiser et allouer des variables sans avoir à créer explicitement une nouvelle variable de type pointeur.

Dans l'exemple suivant, nous utilisons l'opérateur de référence & pour créer une nouvelle variable de type dictionnaire dict :

dict := &map[int]string{}
Copier après la connexion

Ici, utilisez l'opérateur & pour créer un pointeur vers le nouveau dictionnaire et l'attribuer à la variable dict. Bien sûr, nous pouvons également utiliser la fonction new() pour créer la même variable :

dict := new(map[int]string)
Copier après la connexion

Ensuite, nous constaterons qu'en utilisant la fonction new() pour allouer de la mémoire, puisque l'allocation et l'initialisation sont séparées, le code devient plus compliqué et Sujet aux erreurs.

En général, utiliser la fonction new() pour allouer de la mémoire dans Golang peut ne pas être le choix optimal dans certains cas. Relativement parlant, si nous utilisons la fonction make() ou l'opérateur de référence & pour créer une nouvelle variable de structure de données, le code sera plus concis et il sera plus facile de réduire la probabilité d'erreurs d'écriture. Lors de la mise en œuvre du programme, nous devons choisir la manière appropriée d'allouer et d'initialiser la mémoire en fonction de la situation réelle.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal