Maison développement back-end Golang Pourquoi toutes les valeurs deviennent-elles le dernier élément lors de l'utilisation de la plage dans le langage GO pour traverser les tranches et stocker des cartes?

Pourquoi toutes les valeurs deviennent-elles le dernier élément lors de l'utilisation de la plage dans le langage GO pour traverser les tranches et stocker des cartes?

Apr 02, 2025 pm 04:09 PM
go语言 ai 作用域 Pourquoi

Pourquoi toutes les valeurs deviennent-elles le dernier élément lors de l'utilisation de la plage dans le langage GO pour traverser les tranches et stocker des cartes?

GO Map Itération Trap: Pourquoi toutes les valeurs pointent vers le dernier élément?

Lorsqu'elle est utilisée en combinaison avec les structures de données map for...range GO, un piège commun est susceptible de se produire: lors de la traversée de la tranche et de l'ajout d'éléments à map , toutes les valeurs map pointent finalement vers le dernier élément. Cet article analysera ses raisons par des exemples de code et fournira des solutions.

Regardons un morceau de code:

 type Student Struct {
    Chaîne de noms
    Âge int
}

func main () {
    m: = make (map [string] * étudiant)
    étudiants: = [] étudiant {
        {Nom: "pprof.cn", âge: 18},
        {Nom: "test", âge: 23},
        {Nom: "blog", âge: 28},
    }

    pour _, Stu: = gamme les étudiants {
        m [stu.name] = & Stu // Le problème est ici}
    pour k, v: = range m {
        fmt.println (k, "=>", v.name)
    }
}
Copier après la connexion

Le résultat attendu de ce code est de stocker chaque structure Student dans students dans map . Cependant, les résultats d'exécution montrent que toutes les valeurs map indiquent le dernier élément "blog":

 <code>pprof.cn => 博客测试=> 博客博客=> 博客</code>
Copier après la connexion

La racine du problème: portée variable de la boucle de for...range

Le problème est que dans la boucle for...range , stu ne crée pas une nouvelle variable à chaque itération. Il pointe vers la même adresse mémoire dans la tranche students . Chaque itération, la valeur de stu est mise à jour, mais son adresse mémoire reste la même. Ainsi, lorsque la boucle est terminée, tous les pointeurs de map pointent vers la valeur finale de stu (le dernier élément).

Solution: créez une nouvelle copie de la variable

Pour résoudre ce problème, nous devons créer une copie de la variable stu dans chaque itération, en nous assurant que map stocke différentes adresses de mémoire. Le code modifié est le suivant:

 pour _, Stu: = gamme les étudiants {
    Newstu: = Stu // Créer une copie m [newstu.name] = & newstu
}
Copier après la connexion

Ou, un moyen plus concis est de créer directement une nouvelle structure Student :

 pour _, Stu: = gamme les étudiants {
    m [stu.name] = & étudiant {name: stu.name, Âge: stu.age} // créer une nouvelle instance étudiante}
Copier après la connexion

Avec la modification ci-dessus, chaque valeur de map pointera vers une adresse mémoire différente, en évitant le cas où toutes les valeurs pointent vers le dernier élément. L'exécution du code modifié obtiendra les résultats attendus.

Espérons que cette explication vous aidera à comprendre les détails des boucles for...range et des structures de données map en Go et à éviter de tels pièges.

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Grow A Garden - Guide de mutation complet
3 Il y a quelques semaines By DDD
<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Système de fusion, expliqué
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1666
14
Tutoriel PHP
1273
29
Tutoriel C#
1253
24
Le top5 des échanges les plus sûrs en 2025: Guide de Black U pour éviter les stands, la règle de 100% des fonds pour sauver des vies Le top5 des échanges les plus sûrs en 2025: Guide de Black U pour éviter les stands, la règle de 100% des fonds pour sauver des vies May 08, 2025 pm 08:27 PM

Dans le domaine du trading des crypto-monnaies, la sécurité des échanges a toujours été au centre des utilisateurs. En 2025, après des années de développement et d'évolution, certains échanges se distinguent avec leurs mesures de sécurité exceptionnelles et leur expérience utilisateur. Cet article présentera les cinq échanges les plus sécurisés en 2025 et fournira des guides pratiques sur la façon d'éviter les utilisateurs de Black U (Hacker Attacks) pour s'assurer que vos fonds sont à 100% sécurisés.

L'avenir de Go: Tendances et développements L'avenir de Go: Tendances et développements May 02, 2025 am 12:01 AM

GO'sfutureisbrightwithTrends like improvedtooling, génériques, cloud-nativeadoption, performanceenhancements et webassembly integration, butchallengeSincludemainainingImPlicityAnd Improverrorror.

Top 10 des applications de trading de devises virtuelles numériques en 2025 Résumé des 10 principales applications de change de monnaie numérique Top 10 des applications de trading de devises virtuelles numériques en 2025 Résumé des 10 principales applications de change de monnaie numérique May 08, 2025 pm 05:24 PM

Classement des dix principales applications de trading de devises virtuelles numériques en 2025: 1. Binance: diriger le monde, fournir des transactions efficaces et une variété de produits financiers. 2. OKX: Il est innovant et diversifié, soutenant une variété de types de transactions. 3. Huobi: stable et fiable, avec service de haute qualité. 4. Coinbase: Soyez amical pour les débutants et une interface simple. 5. Kraken: le premier choix pour les commerçants professionnels, avec des outils puissants. 6. Bitfinex: trading efficace, paires de trading riches. 7. Bittrex: conformité à la sécurité, coopération réglementaire.

Le dernier didacticiel de téléchargement pour OUYI OKX6.118.0 version Le dernier didacticiel de téléchargement pour OUYI OKX6.118.0 version May 07, 2025 pm 06:51 PM

Le dernier tutoriel de téléchargement pour OUYI OKX6.118.0 Version: 1. Cliquez sur le lien rapide de l'article; 2. Cliquez sur le téléchargement (si vous êtes un utilisateur Web, veuillez d'abord enregistrer les informations). La dernière version Android V6.118.0 optimise certaines fonctions et expériences pour faciliter le trading. Mettez à jour l'application maintenant pour vivre une expérience commerciale plus extrême.

Les 10 meilleures plateformes de crypto-monnaie au monde qui prennent en charge les transactions multi-chaînes sont publiées avec autorité en 2025 Les 10 meilleures plateformes de crypto-monnaie au monde qui prennent en charge les transactions multi-chaînes sont publiées avec autorité en 2025 May 08, 2025 pm 07:15 PM

Selon les dernières évaluations et les tendances de l'industrie des institutions faisant autorité en 2025, les dix principales plateformes de crypto-monnaie au monde sont les dix principales plateformes de crypto-monnaie qui prennent en charge les transactions multi-chaînes, combinant le volume des transactions, l'innovation technologique, la conformité et la réputation de l'utilisateur Analyse complète:

IA et compositeur: améliorer la qualité et le développement du code IA et compositeur: améliorer la qualité et le développement du code May 09, 2025 am 12:20 AM

Dans le compositeur, l'IA améliore principalement l'efficacité du développement et la qualité du code grâce à la recommandation de dépendance, à la résolution des conflits de dépendance et à l'amélioration de la qualité du code. 1. L'IA peut recommander des forfaits de dépendance appropriés en fonction des besoins du projet. 2. L'IA fournit des solutions intelligentes pour faire face aux conflits de dépendance. 3. L'IA examine le code et fournit des suggestions d'optimisation pour améliorer la qualité du code. Grâce à ces fonctions, les développeurs peuvent se concentrer davantage sur la mise en œuvre de la logique commerciale.

Quel est le prix d'émission initial de XRP Quel est le prix d'émission initial de XRP May 07, 2025 pm 03:06 PM

Le prix d'émission initial de XRP est de 0,005 $, fixé le 1er avril 2012, visant à attirer plus d'utilisateurs et d'investisseurs pour participer à son écosystème.

Téléchargez la dernière version de OUYI OKX5.1 Téléchargez la dernière version de OUYI OKX5.1 May 07, 2025 pm 06:48 PM

Le dernier tutoriel de téléchargement pour OUYI OKX6.118.0 Version: 1. Cliquez sur le lien rapide de l'article; 2. Cliquez sur le téléchargement (si vous êtes un utilisateur Web, veuillez d'abord enregistrer les informations). La dernière version Android V6.118.0 optimise certaines fonctions et expériences pour faciliter le trading. Mettez à jour l'application maintenant pour vivre une expérience commerciale plus extrême.

See all articles