ホームページ >バックエンド開発 >Golang >Golang で開発構造体と運用構造体を同じメンバーで異なる JSON タグを持つようにするにはどうすればよいですか?

Golang で開発構造体と運用構造体を同じメンバーで異なる JSON タグを持つようにするにはどうすればよいですか?

WBOY
WBOY転載
2024-02-11 21:54:08694ブラウズ

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

php 編集者 Apple Golang 開発では、開発構造と本番構造で同じメンバーを使用する必要があるが、異なる JSON タグが必要な状況によく遭遇します。この場合、コードの作成中にさまざまなタブを簡単に切り替えられるように、柔軟なソリューションを見つける必要があります。この記事では、開発プロセスをより効率的かつ柔軟にするために、Golang でこの要件を実装する方法を紹介します。

質問内容

初めて質問させていただきます! 同じ構造を使用して開発と運用を分離しようとしています。

私は、アンマーシャリング時に使用する fld タグを含む json としてレコードを送信する airtable を使用しています。

リーリー

2 つの個別のエアテーブルがあります:

  1. 開発用
  2. 本番用

これらは同じです。airtable の動作方法により、フィールドに異なる fld タグが与えられるだけです。

エアテーブル会場の写真

開発環境を運用環境から分離するには、指定している airtable に基づいて正しいメンバーのコメントを解除する必要があります。

リーリー

他のパッケージで使用できるように、この型を独自の model.go ファイルに保存します。

私が調査したところ:

    1 行に複数の json タグがありますが、golang はこれを行いません
  • リーリー
    ビルドタグを使用してファイルを分割すると、おそらくこれでうまくいくかもしれませんが、やり方が間違っています
ファイル1:

リーリー

ファイル2:

リーリー

    再タグ付けの使用を検討しましたが、提示された例は私が探しているものとは異なります
    • リンクを再タグ付け: https://pkg.go.dev/github.com/sevlyar/
    • [email protected]

開発モードで実行しているか運用モードで実行しているかに基づいて、このメンバーのラベルを動的に変更したいと考えています。

どんなご協力も大歓迎です!

回避策

このブロックのビルド フラグを使用して

redeclared コンパイル エラーが発生した場合は、prod ファイルでマークされていないフラグを指定して、この状況を回避します。

開発ファイル

リーリー

製品ドキュメント

リーリー

構築

リーリー

ビルドタグの形式も 1.17 から変更されているため、あなたの場合は次のようになります

リーリー

ただし、古いものと一緒に使用する必要があります。

以上がGolang で開発構造体と運用構造体を同じメンバーで異なる JSON タグを持つようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。