


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.
Kandungan soalan
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:
- Untuk pembangunan
- untuk pengeluaran
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:
- Terdapat beberapa tag json dalam satu baris, golang tidak akan melakukan ini
type airtablerecord struct { // development or production name *string `json:"fldaaaa,fldbbbb,omitempty"` }
- Memisahkan fail saya menggunakan teg binaan, mungkin ini berfungsi tetapi saya salah melakukannya
Fail 1:
// +build dev type airtablerecord struct { // development name *string `json:"fldaaaa,omitempty"` }
Fail 2:
type AirtableRecord struct { // Production Name *string `json:"fldBBBB,omitempty"` }
- Telah mengkaji penggunaan pelabelan semula tetapi contoh yang mereka berikan tidak kelihatan seperti yang saya cari
- Tanda nama semula pautan: https://pkg.go.dev/github.com/sevlyar/[emel dilindungi]
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!
Penyelesaian
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Dalam pewarisan fungsi, gunakan "penunjuk kelas asas" dan "penunjuk kelas terbitan" untuk memahami mekanisme pewarisan: apabila penuding kelas asas menghala ke objek kelas terbitan, transformasi ke atas dilakukan dan hanya ahli kelas asas diakses. Apabila penuding kelas terbitan menghala ke objek kelas asas, hantaran ke bawah dilakukan (tidak selamat) dan mesti digunakan dengan berhati-hati.

Notepad++ sendiri tidak boleh menjalankan program bahasa C dan memerlukan pengkompil luaran untuk menyusun dan melaksanakan kod. Untuk menggunakan pengkompil luaran, anda boleh menyediakannya seperti berikut: 1. Muat turun dan pasang pengkompil bahasa C 2. Cipta alat tersuai dalam Notepad++ dan konfigurasikan laluan dan parameter fail boleh laku pengkompil; atur cara dan simpan dengan sambungan fail .c 4. Pilih fail program bahasa C dan pilih alat tersuai dari menu "Jalankan" untuk menyusun 5. Lihat hasil kompilasi dan keluarkan ralat kompilasi atau mesej kejayaan. Jika kompilasi berjaya, fail boleh laku akan dihasilkan.

Kekunci pintasan untuk menjalankan kod Python dalam Teks Sublime ialah: Windows dan Linux: Ctrl + B Mac: Cmd + B Letakkan kursor dalam kod. Tekan kekunci pintasan. Kod akan dijalankan menggunakan penterjemah Python lalai sistem.

Kata kunci val dalam Java digunakan untuk mengisytiharkan pembolehubah tempatan yang tidak berubah, iaitu nilainya tidak boleh diubah setelah ditetapkan. Ciri-cirinya ialah: Kebolehubahan: Setelah dimulakan, pembolehubah val tidak boleh ditugaskan semula. Skop setempat: pembolehubah val hanya boleh dilihat dalam blok kod di mana ia diisytiharkan. Jenis inferens: Pengkompil Java akan membuat kesimpulan jenis pembolehubah val berdasarkan ungkapan yang diberikan. Pembolehubah tempatan sahaja: val hanya boleh digunakan untuk mengisytiharkan pembolehubah tempatan, bukan medan kelas atau parameter kaedah.

Pengubah suai const menunjukkan pemalar dan nilai tidak boleh diubah suai statik menunjukkan jangka hayat dan skop pembolehubah. Ahli data yang diubah suai oleh const tidak boleh diubah suai selepas pemulaan Pembolehubah yang diubah suai oleh statik dimulakan apabila atur cara dimulakan dan dimusnahkan apabila atur cara itu akan wujud walaupun tiada objek aktif dan boleh diakses merentas fungsi. Pembolehubah tempatan yang diubah suai oleh const mesti dimulakan apabila diisytiharkan, manakala pembolehubah tempatan yang diubah suai oleh statik boleh dimulakan kemudian. Pembolehubah ahli kelas yang diubah suai const mesti dimulakan dalam senarai pembina atau permulaan, manakala pembolehubah ahli kelas yang diubah suai statik boleh dimulakan di luar kelas.

Operator "=" dalam bahasa pengaturcaraan Java digunakan untuk menetapkan nilai kepada pembolehubah, menyimpan nilai di sebelah kanan ungkapan dalam pembolehubah di sebelah kiri. Penggunaan: pembolehubah = ungkapan, dengan pembolehubah ialah nama pembolehubah yang menerima tugasan, dan ungkapan ialah segmen kod yang mengira atau mengembalikan nilai.

Cara pengkompil membezakan antara fungsi terlampau beban: dengan tandatangannya, iaitu jenis setiap hujah fungsi. Walaupun nama fungsi dan bilangan parameter adalah sama, pengkompil boleh memberitahu perbezaan asalkan jenis parameter berbeza.

Fungsi min() dalam C++ mengembalikan minimum dua atau lebih nilai Ia adalah fungsi generik yang boleh membandingkan nilai jenis yang berbeza. Penggunaan adalah seperti berikut: Bandingkan dua nilai: min(a, b) Bandingkan berbilang nilai: min(a, b, c) Bandingkan nilai jenis yang berbeza: min(a, b, c) (perlu menentukan jenis secara eksplisit ) Berkenaan untuk Membandingkan elemen dalam tatasusunan dan bekas
