目次
Go 構造体内の複数の名前タグ
問題: 構造体での複数の名前タグの定義
解決策: タグ区切り文字としてスペースを使用する
ドキュメント リファレンス
ホームページ バックエンド開発 Golang Go 構造体のフィールドに複数の名前タグを定義するにはどうすればよいですか?

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

Dec 04, 2024 pm 02:47 PM

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか? Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか? Mar 03, 2025 pm 05:17 PM

Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか?

GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか? GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか? Mar 10, 2025 pm 05:38 PM

GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか?

Beegoフレームワークのページ間で短期情報転送を実装する方法は? Beegoフレームワークのページ間で短期情報転送を実装する方法は? Mar 03, 2025 pm 05:22 PM

Beegoフレームワークのページ間で短期情報転送を実装する方法は?

トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか? トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか? Mar 10, 2025 pm 05:36 PM

トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか?

GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか? GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか? Mar 10, 2025 pm 03:20 PM

GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか?

Go言語でファイルを便利に書く方法は? Go言語でファイルを便利に書く方法は? Mar 03, 2025 pm 05:15 PM

Go言語でファイルを便利に書く方法は?

MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は? MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は? Mar 03, 2025 pm 05:18 PM

MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は?

Linterと静的分析ツールを使用して、GOコードの品質と保守性を向上させるにはどうすればよいですか? Linterと静的分析ツールを使用して、GOコードの品質と保守性を向上させるにはどうすればよいですか? Mar 10, 2025 pm 05:38 PM

Linterと静的分析ツールを使用して、GOコードの品質と保守性を向上させるにはどうすればよいですか?

See all articles