Jadual Kandungan
Kandungan soalan
Penyelesaian
Rumah pembangunan bahagian belakang Golang Bagaimana untuk mempunyai struct pembangunan dan struct pengeluaran di Golang dengan ahli yang sama tetapi tag JSON yang berbeza?

Bagaimana untuk mempunyai struct pembangunan dan struct pengeluaran di Golang dengan ahli yang sama tetapi tag JSON yang berbeza?

Feb 11, 2024 pm 09:54 PM
Ralat kompilasi pembangunan golang

如何在 Golang 中拥有具有相同成员但不同 JSON 标签的开发结构和生产结构?

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"`
}
Salin selepas log masuk

Saya mempunyai 2 jadual udara berasingan:

  1. Untuk pembangunan
  2. 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"`
}
Salin selepas log masuk

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"`
}
Salin selepas log masuk
  • 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"`
}
Salin selepas log masuk
Salin selepas log masuk

Fail 2:

type AirtableRecord struct {
    // Production
    Name   *string  `json:"fldBBBB,omitempty"`
}
Salin selepas log masuk
  • 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"`
}
Salin selepas log masuk
Salin selepas log masuk

Dokumen Produk

// +build !dev
type airtablerecord struct {
    // development
    name   *string  `json:"fldaaaa,omitempty"`
}
Salin selepas log masuk

Bina

# for dev
go build -tags=dev -o devrel
# for prod
go build -tags=prod -o prodrel  
or no tags for prod
Salin selepas log masuk

Format teg binaan juga telah berubah sejak 1.17, jadi dalam kes anda,

//go:build dev
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Penjelasan terperinci tentang warisan fungsi C++: Bagaimana untuk menggunakan 'penunjuk kelas asas' dan 'penunjuk kelas terbitan' dalam warisan? Penjelasan terperinci tentang warisan fungsi C++: Bagaimana untuk menggunakan 'penunjuk kelas asas' dan 'penunjuk kelas terbitan' dalam warisan? May 01, 2024 pm 10:27 PM

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.

Bagaimana untuk menjalankan bahasa C dalam notepad++ Bagaimana untuk menjalankan bahasa C dalam notepad++ Apr 08, 2024 am 10:06 AM

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 mana yang perlu ditekan semasa menjalankan kod python secara sublime Kekunci mana yang perlu ditekan semasa menjalankan kod python secara sublime Apr 03, 2024 pm 03:54 PM

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.

Apakah maksud val dalam java Apakah maksud val dalam java Apr 25, 2024 pm 10:06 PM

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.

Perbezaan antara const dan statik dalam c++ Perbezaan antara const dan statik dalam c++ May 01, 2024 am 10:54 AM

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.

Apakah maksud = dalam java Apakah maksud = dalam java Apr 26, 2024 pm 11:30 PM

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.

Bagaimanakah pengkompil membezakan antara parameter dengan gaya yang sama tetapi jenis yang berbeza dalam mekanisme kelebihan beban fungsi Java? Bagaimanakah pengkompil membezakan antara parameter dengan gaya yang sama tetapi jenis yang berbeza dalam mekanisme kelebihan beban fungsi Java? Apr 25, 2024 am 10:03 AM

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.

Bagaimana untuk menggunakan fungsi min dalam c++ Bagaimana untuk menggunakan fungsi min dalam c++ May 06, 2024 pm 05:18 PM

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

See all articles