Maison >développement back-end >Golang >Comment puis-je analyser efficacement les structures imbriquées avec sqlx ?

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

DDD
DDDoriginal
2024-11-23 08:55:11522parcourir

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"`
}

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
}

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"
}

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!

Déclaration:
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