Maison >développement back-end >Golang >Comment avoir une structure de développement et une structure de production dans Golang avec les mêmes membres mais des balises JSON différentes ?
php Editor Apple Dans le développement Golang, nous rencontrons souvent des situations où nous devons utiliser les mêmes membres dans la structure de développement et la structure de production, mais avons besoin de balises JSON différentes. Dans ce cas, nous devons trouver une solution flexible afin de pouvoir basculer facilement entre les différents onglets lors de l'écriture du code. Cet article expliquera comment implémenter cette exigence dans Golang pour rendre le processus de développement plus efficace et flexible.
Première fois posée ! J'essaie de séparer le développement et la production en utilisant la même structure.
J'utilise airtable qui envoie les enregistrements au format json avec la balise fld que nous utilisons lors du démarchage.
type airtablerecord struct { name *string `json:"fldaaaa,omitempty"` }
J'ai 2 airtables distinctes :
Ce sont les mêmes, c'est juste qu'en raison du fonctionnement d'airtable, les champs reçoivent des étiquettes fld différentes
Photos de ma salle airtable
Maintenant, pour séparer l'environnement de développement de l'environnement de production, je dois décommenter les membres corrects en fonction de la table air vers laquelle je pointe.
type airtablerecord struct { // development name *string `json:"fldaaaa,omitempty"` // production //name *string `json:"fldbbbb,omitempty"` }
Je conserve ce type dans son propre fichier model.go pour l'utiliser par d'autres packages.
J'ai enquêté :
type airtablerecord struct { // development or production name *string `json:"fldaaaa,fldbbbb,omitempty"` }
Fichier 1 :
// +build dev type airtablerecord struct { // development name *string `json:"fldaaaa,omitempty"` }
Fichier 2 :
type AirtableRecord struct { // Production Name *string `json:"fldBBBB,omitempty"` }
Je souhaite changer dynamiquement le label de ce membre selon que je fonctionne en mode développement ou en mode production.
Toute aide serait grandement appréciée !
Si vous obtenez une redeclared 使用构建标记的
erreur de compilation dans ce bloc, veuillez spécifier une balise non balisée sur le fichier prod pour éviter cela.
Fichiers de développement
// +build dev type airtablerecord struct { // development name *string `json:"fldaaaa,omitempty"` }
Documents produits
// +build !dev type airtablerecord struct { // development name *string `json:"fldaaaa,omitempty"` }
Construire
# for dev go build -tags=dev -o devrel # for prod go build -tags=prod -o prodrel or no tags for prod
Le format des balises de build a également changé depuis la 1.17, donc dans votre cas, ce serait le cas,
//go:build dev
Mais doit également être utilisé avec les plus âgés.
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!