Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk mempunyai struct pembangunan dan struct pengeluaran di Golang dengan ahli yang sama tetapi tag JSON yang berbeza?
php Editor Apple Dalam pembangunan Golang, kami sering menghadapi situasi di mana kami perlu menggunakan ahli yang sama dalam struktur pembangunan dan struktur pengeluaran, tetapi memerlukan tag JSON yang berbeza. Dalam kes ini, kita perlu mencari penyelesaian yang fleksibel supaya kita boleh menukar antara tab yang berbeza dengan mudah semasa menulis kod. Artikel ini akan memperkenalkan cara melaksanakan keperluan ini di Golang untuk menjadikan proses pembangunan lebih cekap dan fleksibel.
Pertama kali bertanya! Saya cuba memisahkan pembangunan dan pengeluaran menggunakan struktur yang sama.
Saya menggunakan airtable yang menghantar rekod sebagai json dengan tag fld yang kami gunakan semasa unmarshalling.
type airtablerecord struct { name *string `json:"fldaaaa,omitempty"` }
Saya mempunyai 2 jadual udara berasingan:
Ia adalah sama, cuma kerana cara meja udara berfungsi, medan diberi label fld yang berbeza
Gambar tempat meja udara saya
Sekarang untuk memisahkan persekitaran pembangunan daripada persekitaran pengeluaran, saya perlu membatalkan ulasan ahli yang betul berdasarkan jadual udara yang saya tunjuk.
type airtablerecord struct { // development name *string `json:"fldaaaa,omitempty"` // production //name *string `json:"fldbbbb,omitempty"` }
Saya menyimpan jenis ini dalam fail model.go miliknya sendiri untuk digunakan oleh pakej lain.
Saya menyiasat:
type airtablerecord struct { // development or production name *string `json:"fldaaaa,fldbbbb,omitempty"` }
Fail 1:
// +build dev type airtablerecord struct { // development name *string `json:"fldaaaa,omitempty"` }
Fail 2:
type AirtableRecord struct { // Production Name *string `json:"fldBBBB,omitempty"` }
Saya mahu menukar label ahli ini secara dinamik bergantung pada sama ada saya menjalankan mod pembangunan atau mod pengeluaran.
Sebarang dan semua bantuan akan sangat dihargai!
Jika anda mendapat redeclared 使用构建标记的
ralat kompilasi dalam blok ini, sila nyatakan tag tidak berteg pada fail prod untuk mengelakkan perkara ini.
Fail pembangunan
// +build dev type airtablerecord struct { // development name *string `json:"fldaaaa,omitempty"` }
Dokumen Produk
// +build !dev type airtablerecord struct { // development name *string `json:"fldaaaa,omitempty"` }
Bina
# for dev go build -tags=dev -o devrel # for prod go build -tags=prod -o prodrel or no tags for prod
Format teg binaan juga telah berubah sejak 1.17, jadi dalam kes anda,
//go:build dev
Tetapi juga harus digunakan dengan yang lebih tua.
Atas ialah kandungan terperinci Bagaimana untuk mempunyai struct pembangunan dan struct pengeluaran di Golang dengan ahli yang sama tetapi tag JSON yang berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!