ホームページ > バックエンド開発 > Golang > Go 構造体のフィールドに複数の名前タグを定義するにはどうすればよいですか?

Go 構造体のフィールドに複数の名前タグを定義するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-04 14:47:11
オリジナル
200 人が閲覧しました

How Can I Define Multiple Name Tags for Fields in a Go Struct?

Go 構造体内の複数の名前タグ

Go で構造体を操作する場合、異なるコンテキストで同じフィールドを表すために複数の名前タグを定義すると便利です。これは、特定の形式のデータを必要とするサードパーティのライブラリや API を扱う場合に特に便利です。

問題: 構造体での複数の名前タグの定義

次の例を考えてみましょう:

type Page struct {
    PageId string                 `bson:"pageId"`
    Meta   map[string]interface{} `bson:"meta"`
}
ログイン後にコピー

この構造体は、MongoDB (bson) のタグが付けられた PageId フィールドを持つ Mongo データベース ドキュメントを表すように設計されています。 MongoDB 用にタグ付けされた Meta フィールドも同様です。ただし、この構造体を JSON にエンコードすると、PageId フィールドは pageId ではなく PageId (大文字) としてレンダリングされます。

解決策: タグ区切り文字としてスペースを使用する

1 つのオブジェクトに複数の名前タグを定義するにはフィールドでは、タグ間の区切り文字としてカンマの代わりにスペースを使用します。構造体の更新バージョンは次のとおりです。

type Page struct {
    PageId string                 `bson:"pageId" json:"pageId"`
    Meta   map[string]interface{} `bson:"meta" json:"meta"`
}
ログイン後にコピー

この変更により、PageId フィールドは MongoDB (pageId として) と JSON (pageId として) の両方でタグ付けされます。これにより、MongoDB と対話するとき、または JSON にエンコードするときに、フィールドに適切な名前が付けられるようになります。

ドキュメント リファレンス

Go リフレクト パッケージのドキュメントでは、タグ文字列の規則が指定されています。

By convention, tag strings are a concatenation of optionally space-separated key:"value" pairs.
ログイン後にコピー

以上がGo 構造体のフィールドに複数の名前タグを定義するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート