Maison >développement back-end >Golang >Comment puis-je définir plusieurs balises de nom pour les champs dans une structure Go ?

Comment puis-je définir plusieurs balises de nom pour les champs dans une structure Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-04 14:47:11237parcourir

How Can I Define Multiple Name Tags for Fields in a Go Struct?

Plusieurs balises de nom dans une structure Go

Lorsque vous travaillez avec des structures dans Go, il peut être utile de définir plusieurs balises de nom pour représenter le même champ dans différents contextes. Ceci est particulièrement utile lorsqu'il s'agit de bibliothèques ou d'API tierces qui attendent des données dans un format spécifique.

Problème : définition de plusieurs balises de nom dans une structure

Considérons l'exemple suivant :

type Page struct {
    PageId string                 `bson:"pageId"`
    Meta   map[string]interface{} `bson:"meta"`
}

Cette structure est conçue pour représenter un document de base de données Mongo, avec le champ PageId balisé pour MongoDB (bson) et le champ Meta également marqué pour MongoDB. Cependant, lors de l'encodage de cette structure en JSON, le champ PageId est rendu sous la forme PageId (en majuscules) au lieu de pageId.

Solution : Utiliser l'espace comme séparateur de balises

Pour définir plusieurs balises de nom pour un Dans ce champ, utilisez un espace au lieu de virgules comme séparateur entre les balises. Voici une version mise à jour de la structure :

type Page struct {
    PageId string                 `bson:"pageId" json:"pageId"`
    Meta   map[string]interface{} `bson:"meta" json:"meta"`
}

Avec cette modification, le champ PageId est balisé à la fois pour MongoDB (en tant que pageId) et JSON (en tant que pageId). Cela garantit que le champ sera nommé de manière appropriée lors de l'interaction avec MongoDB ou de l'encodage en JSON.

Référence de la documentation

La documentation du package Go Reflect spécifie la convention pour les chaînes de balises :

By convention, tag strings are a concatenation of optionally space-separated key:"value" pairs.

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