Maison > développement back-end > Golang > le corps du texte

Comment puis-je analyser efficacement les structures imbriquées avec sqlx ?

DDD
Libérer: 2024-11-23 08:55:11
original
443 Les gens l'ont consulté

How Can I Efficiently Scan Nested Structs with sqlx?

Analyse dans des structures imbriquées avec sqlx

Les structures imbriquées présentent des défis lors de l'utilisation de sqlx. Cependant, la documentation fournit une solution grâce à l'utilisation de structures intégrées.

Structs intégrés

Sqlx prend en charge les structures intégrées, vous permettant d'attribuer des valeurs aux champs à l'aide des règles de priorité de Go. pour les attributs et méthodes intégrés.

Code Exemple

Considérez le code suivant, où Address n'est pas une structure intégrée :

type Customer struct {
       Id      int     `json:"id" db:"id"`
       Name    string  `json:"name" db:"name"`
       Address Address `json:"adress"`
}

type Address struct {
       Street string `json:"street" db:"street"`
       City   string `json:"city" db:"city"`
}
Copier après la connexion

Ce code entraînera une erreur lors de la tentative d'analyse dans une structure Customer car l'Adresse Le champ n'est pas intégré et n'a pas sa propre balise db.

Pour résoudre ce problème, intégrez l'adresse dans Client :

type Customer struct {
   Id     int    `json:"id" db:"id"`
   Name   string `json:"name" db:"name"`
   Address
}
Copier après la connexion

En intégrant l'adresse, ses champs (y compris les balises) sont promus en client, permettant à sqlx de les remplir à partir du résultat de la requête.

Sortie JSON

L'intégration de l'adresse aplatira la sortie JSON, comme indiqué ci-dessous :

{
    "id": 1,
    "name": "foo",
    "street": "bar",
    "city": "baz"
}
Copier après la connexion

Pour l'adresse ceci, vous pouvez remapper la structure DB à votre type d'origine ou analyser le résultat de la requête dans une carte.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal