Maison >développement back-end >Golang >Comment puis-je copier en profondeur une carte tout en préservant sa référence de supercarte ?

Comment puis-je copier en profondeur une carte tout en préservant sa référence de supercarte ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-29 05:26:10383parcourir

How Can I Deep-Copy a Map While Preserving its Supermap Reference?

Copie approfondie de cartes

La copie du contenu d'une carte peut être un défi, en particulier lorsque vous souhaitez effacer la carte d'origine pour les itérations suivantes. En règle générale, l'effacement de la carte d'origine efface également sa référence dans la supercarte.

Pour copier profondément une carte, suivez ce processus :

  1. Créez une nouvelle carte pour stocker les valeurs copiées.
  2. Parcourez la carte d'origine.
  3. Pour chaque paire clé-valeur de la carte d'origine, créez une copie dans la nouvelle map.

Voici un exemple :

for k, v := range originalMap {
  newMap[k] = v
}

Une fois que vous avez copié le contenu, vous pouvez maintenant effacer la carte d'origine sans affecter la référence de la supercarte à la nouvelle carte.

Adressage de l'exemple de pseudo-code

Votre pseudo-code tente de copier le contenu d'aMap dans aSuperMap tout en effaçant aMap. Cependant, il échoue car il s'appuie sur delete(aMap, x), qui modifie à la fois l'original et la supercarte.

Pour résoudre ce problème, vous pouvez :

  1. Créer une nouvelle carte dans la boucle et attribuez-la à aSuperMap[y].
  2. Copiez le contenu d'aMap dans le nouveau map.
  3. Effacer une carte.

En suivant ces étapes, vous pouvez copier en profondeur une carte sans perdre sa référence dans la supercarte ni introduire de données en double.

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