Les différences entre les opérateurs new() et "&"
Dans Go, la fonction new() et l'adresse mémoire "&" L’opérateur est tous deux utilisés pour allouer de la mémoire. Cependant, il existe quelques différences subtiles entre leur utilisation.
Comparaison des fonctionnalités
Les opérateurs new() et & renvoient un pointeur vers une adresse mémoire nouvellement allouée. Cependant, ils diffèrent par leur syntaxe :
Analyse de type
Comme le démontre le Dans l'exemple de code fourni, l'analyse de réflexion montre que &Vector{} et new(Vector) renvoient des pointeurs du même type, car tous deux sont des pointeurs vers des instances de la structure Vector.
Confusion historique
La liste de diffusion Go a déjà évoqué ses préoccupations concernant l'utilisation à la fois de new() et de & pour l'allocation de mémoire, car cela peut prêter à confusion.
Spécial Case
Il convient de noter que new() est la seule méthode pour obtenir un pointeur vers un type de base sans nom, tel qu'un entier. Cela peut être vu dans l'exemple suivant :
p := new(int) // valid p := &int{0} // invalid
Préférence et utilisation
En fin de compte, le choix entre utiliser new() et & pour l'allocation de mémoire est en grande partie une question de préférence personnelle. Les deux méthodes ont les mêmes fonctionnalités et produisent les mêmes résultats. Cependant, il est important d'être conscient des différences subtiles entre les deux opérateurs et de les utiliser de manière appropriée en fonction d'exigences spécifiques.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3