Maison >développement back-end >Golang >La différence entre les références Golang et les pointeurs

La différence entre les références Golang et les pointeurs

(*-*)浩
(*-*)浩original
2019-12-27 13:35:119523parcourir

La différence entre les références Golang et les pointeurs

Certains langages, dont C et C++, prennent en charge les pointeurs. D'autres langages, notamment C++, Java, Python, Ruby, Perl et PHP, prennent tous en charge les citations. En apparence, les références et les pointeurs sont très similaires ; ils sont tous deux utilisés pour permettre à une variable de donner accès à une autre variable. (Apprentissage recommandé : GO )

Parce que les deux fournissent de nombreuses mêmes fonctions, ils ne savent souvent pas clairement en quoi leurs mécanismes internes sont différents. Dans cet article, j'expliquerai la différence entre les pointeurs et les références.

Pourquoi c'est important

Les pointeurs sont au cœur du langage Go. La plupart des programmeurs apprennent Go sur la base de l'un des langages mentionnés ci-dessus. Par conséquent, comprendre la différence entre les pointeurs et les références est crucial pour comprendre Go.

Même si vous avez travaillé avec des langages qui ont des pointeurs, l'implémentation des pointeurs dans Go est différente de C et C++ en ce sens qu'elle conserve certaines des propriétés intéressantes des références tout en conservant la fonctionnalité des pointeurs.

Le reste de cet article est destiné à discuter du concept de références au sens large, plutôt que de ses implémentations spécifiques. Nous utiliserons Go comme implémentation de référence des pointeurs.

Quelle est la différence ?

Une variable pointeur stocke l'adresse d'une autre variable.

Une variable de référence pointe vers une autre variable.

Pour prouver notre point de vue, utilisons C++ comme exemple, qui prend en charge à la fois les pointeurs et les références.

int i = 3;2int *ptr = &i;3int &ref = i;

La première ligne définit la variable i ; la deuxième ligne définit un pointeur ptr pointant vers l'adresse mémoire de la variable i ; la troisième ligne définit une référence pointant vers la variable i ;

Non seulement les opérateurs sont différents, mais les méthodes utilisées sont également différentes. Pour les pointeurs, vous devez utiliser l'opérateur * pour déréférencer. Pour les références, aucun opérateur n’est requis. Il est entendu que vous avez tendance à utiliser des variables entre guillemets.

En continuant avec notre exemple, les deux lignes de code suivantes changeront toutes deux la valeur de i à 13.

ptr = 13;
ref = 13;

Vous pouvez me demander si j'essaie d'accéder directement à la variable ptr sans utiliser le déréférencement. Cela nous amène à la deuxième différence clé entre les pointeurs et les références. Les pointeurs peuvent être réaffectés, les références ne le peuvent pas. En d’autres termes, le pointeur peut se voir attribuer une adresse différente.

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