Maison > développement back-end > Golang > Comment convertir une tranche de structures anonymes en une tranche de structures définies dans Golang ?

Comment convertir une tranche de structures anonymes en une tranche de structures définies dans Golang ?

Susan Sarandon
Libérer: 2024-10-26 16:33:30
original
581 Les gens l'ont consulté

How to Convert a Slice of Anonymous Structs to a Slice of Defined Structs in Golang?

Conversion de type entre tranches de structures dans Golang

Cette enquête est centrée sur la conversion de type entre tranches de structures. Plus précisément, nous visons à convertir une tranche de structures anonymes en une tranche d'une structure définie.

Problème sous-jacent

Le problème survient en raison de la différence entre les deux types de structures :

  • Structure Société avec un seul champ nommé Name
  • Structure anonyme avec un seul champ nommé Name tagué avec json:"a.name"

La présence du tag crée un type de structure distinct, empêchant la conversion directe.

Options de solution

Option 1 : Itération et copie

  • Parcourir les deux tranches et copiez manuellement chaque champ de la structure anonyme vers la structure Société.
  • Cette approche est sûre et fiable mais moins efficace en raison de sa nature itérative.
<code class="go">ls := make(ListSociete, len(res))
for i := 0; i < len(res); i++ {
    ls[i].Name = res[i].Name
}
return ls, nil</code>
Copier après la connexion

Option 2 : Conversion non sécurisée

  • Conversion de type directe à l'aide de pointeurs non sécurisés.
  • Cette méthode contourne la vérification de type et peut entraîner des erreurs d'exécution si les structures de données sous-jacentes changent de manière inattendue.
  • Attention : Utilisez cette approche avec prudence car elle compromet la sécurité des types.
<code class="go">return *(*ListSociete)(unsafe.Pointer(&amp;res)), nil</code>
Copier après la connexion

Bonnes pratiques

  • Définissez les structures appropriées pour représenter le modèle de données.
  • Utilisez des conversions de type explicites lorsque cela est nécessaire pour maintenir la sécurité des types.
  • Optez pour l'approche d'itération et de copie sécurisée pour des conversions fiables.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal