Maison  >  Article  >  développement back-end  >  Quel type de golang est nouveau ?

Quel type de golang est nouveau ?

WBOY
WBOYoriginal
2023-05-10 21:52:35429parcourir

Golang est un langage de programmation de plus en plus populaire Au cours de son développement rapide, une question courante est de savoir quels paramètres de type doivent être fournis lors de l'utilisation du nouveau mot-clé dans Golang. Cette question est un peu délicate et nécessite une compréhension approfondie du système de types de Golang et de la nature du nouveau mot-clé.

Tout d'abord, passons en revue le nouveau mot-clé dans Golang. Le nouveau mot-clé est utilisé pour allouer de l'espace mémoire sur le tas et renvoyer son adresse. Plus précisément, new accepte un paramètre de type et renvoie un pointeur de ce type. Voici un exemple d'utilisation du mot-clé new :

var p *int
p = new(int)

Dans cet exemple, nous utilisons le mot-clé new pour créer un pointeur p vers un type entier. Nous pouvons utiliser le pointeur p pour accéder à l’espace mémoire de type entier nouvellement alloué.

Cependant, si nous essayons de passer un type de structure à new en tant que paramètre, par exemple :

type Person struct {
    name string
    age int
}

var p *Person
p = new(Person)

Cela est divisé en deux étapes. Tout d'abord, nous définissons un type de structure nommé Person, puis utilisons le nouveau mot-clé pour le fournir. avec Allouer de l'espace mémoire. De même, nous pouvons utiliser le pointeur p pour accéder à l’espace mémoire nouvellement alloué de type Personne.

Alors, quel type de paramètres devons-nous transmettre au nouveau mot-clé ? En fait, le nouveau mot-clé de Golang peut accepter tout type de paramètres. Plus précisément, son paramètre de type peut être un type intégré, un type personnalisé, un type structure, un type tableau ou même un type d'interface vide. Il n'y a aucune restriction entre ces types et n'importe quel type peut être utilisé comme paramètre de new.

Peu importe de quel type il s'agit, new allouera suffisamment d'espace mémoire sur le tas et renverra ses pointeurs correspondants. Par conséquent, nous pouvons transmettre en toute sécurité n’importe quel type de variable ou de valeur à new, et il lui allouera de l’espace mémoire et renverra un pointeur du type correspondant.

Il convient de noter que dans Golang, les types de pointeurs prennent en charge les valeurs nulles, c'est-à-dire que les pointeurs peuvent être nuls. Cela signifie que si nous utilisons new pour allouer de la mémoire et l'attribuer à une variable pointeur, la valeur initiale de la variable pointeur sera nulle. Par exemple :

var p *Person
p = new(Person)
fmt.Println(p) // 输出 nil

Dans cet exemple, nous définissons une variable pointeur p pointant vers le type Personne et utilisons le nouveau mot-clé pour lui allouer de l'espace mémoire. Puisque new renvoie un type de pointeur et que la valeur par défaut du type de pointeur est nulle, la valeur initiale de la variable p est nulle.

Pour résumer, le nouveau mot-clé de Golang peut être utilisé pour allouer de la mémoire pour tout type de variable ou de valeur et renvoyer un pointeur du type correspondant. Étant donné que les types de pointeurs prennent en charge les valeurs nulles, la valeur initiale des variables de pointeur créées à l’aide du nouveau mot-clé est nulle. Lors de l'utilisation de new, nous n'avons pas besoin de prendre en compte les restrictions de type, il nous suffit de transmettre les variables ou valeurs correspondantes selon les besoins.

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