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