Prendre les adresses des valeurs de la carte dans Go
Pourquoi Go empêche-t-il de prendre l'adresse des valeurs de la carte, contrairement aux éléments slice ? Ce sujet a déjà été soulevé, mais la réponse acceptée, indiquant que les valeurs de la carte ne sont pas soutenues par des tableaux comme les tranches, ne semble pas suffisante.
Réconcilier les hypothèses communes
C'est une idée fausse selon laquelle les valeurs numériques des cartes peuvent être modifiées sur place et que les cartes ont des emplacements de mémoire fixes comme les tranches. L'utilisation d'opérateurs composés comme ou = pour les valeurs de carte numériques effectue efficacement une affectation du résultat modifié, plutôt que de modifier directement la valeur de la carte.
De plus, bien que les cartes soient soutenues par des structures de compartiments, ces compartiments sont dynamiques et peuvent être réorganisé à mesure que les entrées de la carte sont modifiées. Par conséquent, les valeurs de carte n'ont pas d'emplacements de mémoire fixes comme les éléments slice.
Conclusion
L'incapacité de prendre l'adresse des valeurs de carte dans Go découle de la nature dynamique de cartographier les seaux. À mesure que les entrées de carte sont créées, mises à jour ou supprimées, la structure du compartiment subit une réorganisation constante. Ce comportement dynamique empêche les emplacements de mémoire fixes pour les valeurs de carte, ce qui rend peu pratique l'autorisation de la prise d'adresse et des modifications ultérieures. Au lieu de cela, Go fournit des méthodes pour modifier indirectement les valeurs de la carte en récupérant, en modifiant, puis en attribuant la valeur mise à jour à la carte.
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!