Comment puis-je fusionner les deux structures dans Golang?
J'ai deux json-marshallable anonyme des structures.
a := struct {
Name string `json:"name"`
}{"my name"}
b := struct {
Description string `json:"description"`
}{"my description"}
Est-il possible de les fusionner en json pour obtenir quelque chose comme ça:
{
"name":"my name",
"description":"my description"
}
Ce serait mal avec
fmt.Sprintf("{\"name\":%q,\"description\":%q}", a.Name, b.Description)
? Certaines choses ne nécessite peu de codage...OriginalL'auteur Dmitry Kapsamun | 2016-11-09
Vous devez vous connecter pour publier un commentaire.
Vous pouvez incorporer les deux structures dans un autre.
Le JSON package traiter intégré des structures un peu comme les syndicats, mais cela peut être maladroit, assez rapidement.
Ne pouvez-vous pas créer un type? Pourquoi est la structure anonyme?
OriginalL'auteur nothingmuch
C'est un peu compliqué, mais je suppose que vous pourriez faire quelque chose comme ceci:
Pouvez-vous marquer la réponse acceptée. Merci
OriginalL'auteur Franck Jeannin
Go est tout au sujet de la composition au cours de l'héritage. Malheureusement, vous êtes à l'aide de anonyme les structures, mais étant donné que vous êtes clairement en essayant de json maréchal, vous êtes mieux de les définir comme des types:
Vous pouvez initialiser de la même manière que vous êtes en train de faire, mais au lieu de
struct{<fields>}{init}
, vous aurez juste écrireVous pouvez combiner comme vous le désirez en écrivant:
Un caprice (qui pourraient voyage vous dans un premier temps) vous avez à faire à lors de la composition des types comme ce est la façon dont vous initialiser les membres. Supposons que vous décidez de créer un type qui combine les deux autres structures:
Vous ne pouvez pas initialiser comme ceci:
Aller se plaindre à propos de vous à l'aide de chaîne de type de type de
name
. Vous aurez à écrire quelque chose comme ceci:D'un composite construit à l'aide d'objets existants (cf
c := struct{}{a, b}
) fait déjà.En fonction de ce que vous essayez de faire, il est parfois plus facile d'écrire quelque chose comme ceci:
Il rend la vie plus facile lorsque vous êtes à l'imbrication des types de composé de plusieurs niveaux de profondeur.
essayer d'aller de l'aire de jeux. Il va/doit ressembler à ceci:
{"name": "Name value", "description": "Description val"}
. Les autres types ne sont pas exportés, intégré aux structuresConfirmé, vérifiez le débit de la ici
C'est vraiment cool, merci
OriginalL'auteur Elias Van Ootegem
Vous pouvez fusionner les deux struct comme ceci :
OriginalL'auteur Adrien Parrochia