php小編蘋果在Golang開發中,我們經常遇到需要在開發結構和生產結構中使用相同的成員,但卻需要不同的JSON標籤的情況。在這種情況下,我們需要找到一種靈活的解決方案,以便在編寫程式碼時能夠輕鬆切換不同的標籤。本文將介紹如何在Golang中實現這項需求,讓開發過程更有效率、更有彈性。
第一次問問題! 我正在嘗試將使用相同結構的開發和生產分開。
我正在使用 airtable,它將記錄作為 json 發送,並帶有我們在解組時使用的 fld 標籤。
type airtablerecord struct { name *string `json:"fldaaaa,omitempty"` }
我有 2 個獨立的 airtable:
它們是相同的,只是因為 airtable 的工作方式,欄位被賦予了不同的 fld 標籤
我的 airtable 場地的圖片
現在要將開發環境與生產環境分開,我必須根據我指向的 airtable 取消註解正確的成員。
type airtablerecord struct { // development name *string `json:"fldaaaa,omitempty"` // production //name *string `json:"fldbbbb,omitempty"` }
我將此類型保留在它自己的 model.go 檔案中,供其他套件使用。
我調查過:
type airtablerecord struct { // development or production name *string `json:"fldaaaa,fldbbbb,omitempty"` }
檔案1:
// +build dev type airtablerecord struct { // development name *string `json:"fldaaaa,omitempty"` }
檔案2:
type AirtableRecord struct { // Production Name *string `json:"fldBBBB,omitempty"` }
我想根據我是在開發模式還是生產模式下運行來動態更改此成員的標籤。
任何及所有幫助將不勝感激!
如果您在此區塊中收到redeclared 使用建置標記的
編譯錯誤,請在prod 檔案上指定一個未標記的標記,以避免出現這種情況。
開發文件
// +build dev type airtablerecord struct { // development name *string `json:"fldaaaa,omitempty"` }
產品檔案
// +build !dev type airtablerecord struct { // development name *string `json:"fldaaaa,omitempty"` }
建置
# for dev go build -tags=dev -o devrel # for prod go build -tags=prod -o prodrel or no tags for prod
自 1.17 以來,建立標籤格式也發生了變化,所以在您的情況下,它會是,
//go:build dev
但也應該與舊的一起使用。
以上是如何在 Golang 中擁有具有相同成員但不同 JSON 標籤的開發結構和生產結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!