Maison  >  Article  >  développement back-end  >  Comment convertir une tranche de structures anonymes en une tranche de structures non anonymes en Go ?

Comment convertir une tranche de structures anonymes en une tranche de structures non anonymes en Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-27 11:40:01864parcourir

How to Convert a Slice of Anonymous Structs to a Slice of Non-Anonymous Structs in Go?

Conversion de type entre tranches de structures dans Go

Problème :

Dans une tentative de Si vous convertissez une tranche de structures anonymes en une tranche de structures non anonymes, des erreurs se produisent. Cela soulève des questions sur l'équivalence des structures avec et sans balises JSON et sur la compatibilité des différentes tranches.

Réponse :

Différences entre les types de structure :

Les structures avec différentes balises JSON sont considérées comme des types différents car les balises affectent l'encodage et le décodage des données JSON.

Options de conversion :

1. Copier par itération :

Il s'agit de la méthode recommandée, mais elle est plus lente et plus détaillée. Cela implique de copier chaque élément de la tranche de structure anonyme dans la tranche de structure non anonyme.

<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>

2. Conversion non sécurisée :

Il s'agit d'une méthode non sécurisée qui suppose que la structure de données sous-jacente des deux types de structure est identique.

<code class="go">return *(*ListSociete)(unsafe.Pointer(&res)), nil</code>

Avertissement :

La conversion non sécurisée peut entraîner un comportement imprévisible et n'est pas recommandée pour une utilisation générale. Son utilisation peut entraîner des corruptions de mémoire ou d'autres erreurs inattendues.

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