Maison > développement back-end > Golang > Comment désorganiser les structures intégrées dans Go ?

Comment désorganiser les structures intégrées dans Go ?

Mary-Kate Olsen
Libérer: 2024-11-04 12:13:30
original
868 Les gens l'ont consulté

How to Unmarshal Embedded Structs in Go?

Désorganisation des structures intégrées dans Go

Cet article aborde le problème de la désorganisation des données JSON dans une structure qui contient une structure intégrée. L'exemple fourni, dans lequel la structure Inner est intégrée dans la structure Outer, montre que la méthode UnmarshalJSON par défaut pour Inner est appelée et que seul le champ Data est renseigné, laissant le champ Num de Outer vide.

La raison car ce comportement réside dans le mécanisme de structure intégré de Go. Lorsqu'une structure intégrée est désorganisée, le processus de désorganisation cible directement la structure intégrée et ignore les champs de la structure externe.

Pour résoudre ce problème, une solution plus simple et plus efficace est proposée : faire de la structure interne un champ explicite. dans la structure externe.

En déclarant explicitement Inner comme champ, la méthode UnmarshalJSON de la structure externe est appelée avec l'intégralité des données JSON. Dans cette méthode, le champ Data d'Inner peut être renseigné à l'aide de la méthode UnmarshalJSON de la structure Inner intégrée, tandis que le champ Num peut être renseigné séparément. Cette approche garantit que les deux champs de la structure externe sont correctement renseignés lors du démarshalling.

Voici un exemple fonctionnel pour illustrer la solution :

<code class="go">type Outer struct {
    I Inner     // Inner as explicit field
    Num int `json:"Num"`
}</code>
Copier après la connexion

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