ホームページ  >  記事  >  バックエンド開発  >  SQLX を使用してネストされた構造体を Go 構造体に正しくスキャンする方法は?

SQLX を使用してネストされた構造体を Go 構造体に正しくスキャンする方法は?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-25 12:13:12711ブラウズ

How to Correctly Scan Nested Structs into Go Structs Using SQLX?

SQLX ネストされた構造体のスキャン

SQLX を使用してクエリ結果をネストされた構造体にスキャンしようとする場合、正しいアプローチを理解することが重要です。

この例では、Address 構造体が正しく埋め込まれていないため、型不一致エラーが発生します。 Customer 構造体内。この問題に対処するには、埋め込みが必要です。

埋め込み構造体

埋め込み構造体を使用すると、埋め込み型の名前をプレフィックスとして付ける必要なく、埋め込みフィールドにアクセスできます。これにより、フィールド アクセスが簡素化され、クエリ結果をスキャンするときに、埋め込まれた構造体のフィールドが正しく設定されるようになります。

type Customer struct {
    Id        int
    Name      string
    Address   // Embedded struct without tags
}

type Address struct {
    Street string  `db:"street"`
    City   string  `db:"city"`
}

更新されたクエリ

Address 構造体を埋め込むことにより、SQLX は自動的にアドレス構造体から値を割り当てます。クエリ結果をデータベース タグに基づいて適切なフィールドに送信します。

customer := models.Customer{}
err := db.Get(&customer, `select * from users where>

JSONマーシャリング

Address 構造体を埋め込むと、JSON 出力がフラット化され、ネストされたアドレス オブジェクトが削除されることに注意してください。ネストされた構造を維持するには、型変換を使用してフィールドを元の構造体にマップし直すことを検討してください。

以上がSQLX を使用してネストされた構造体を Go 構造体に正しくスキャンする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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