La signification fondamentale d'un pointeur est l'adresse mémoire où certaines valeurs sont stockées. (recommandé à apprendre : go)
En Golang, bien que toutes les valeurs ne puissent pas être extraites de l'adresse (bien qu'elles soient également stockées en mémoire, comme const) , mais toutes les variables doivent pouvoir extraire des adresses.
Une variable est une valeur stockée dans une zone mémoire [1]. Non seulement x dans le familier var x int est une variable, mais une expression plus complexe peut également représenter une variable, telle que sliceA[0], mapB["key"] et structC.FieldD. Autrement dit, ils peuvent chacun avoir leurs propres pointeurs.
Lorsque nous devons modifier le contenu variable de la structure, les paramètres des variables de structure transmis par la méthode doivent utiliser des pointeurs, qui sont les adresses des structures, et les variables de l'architecture dans la carte doit être modifiée. Parfois, vous devez également utiliser l'adresse de la structure comme valeur de la carte.
Go peut créer directement un nouveau pointeur de structure
En golang, on peut obtenir une structure via ptr := &A{Value: 1} Un pointeur vers la valeur du corps A ; mais en C elle ne peut pas être obtenue via une instruction d'affectation distincte :
typedef struct { int value; } A;A *ptr1; // 无法给 ptr 所指的值赋值 A *ptr2 = &A{1}; // 没有这样的语法 A a = {1}; // 再通过 &a 可以得到指针
Si cette différence n'est qu'une apparence grammaticale, l'autre différence peut être liée à des bugs.
2. Les pointeurs vers des variables locales peuvent être renvoyés en toute sécurité dans Go
Dans l'exemple de code C ci-dessus, nous pouvons effectivement déclarer certaines variables, mais si ces déclarations sont terminées. au sein d'une méthode, comme :
A *init(){ A *ptr; return ptr;}
ou
A *init(){ A a; return &a;}
Ensuite, cette variable locale déclarée est une variable automatique (variable automatique[3]). La méthode d'origine est aussi c'est init(). Une fois celle-ci terminée, ces variables automatiques "disparaissent".
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!