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
Susan Sarandonoriginal
2024-10-26 16:33:30528parcourir

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>

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>

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!

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