Maison >développement back-end >Golang >Pourquoi seuls les champs de structure en majuscules sont-ils mis à jour dans CouchDB à l'aide de go-couchdb ?

Pourquoi seuls les champs de structure en majuscules sont-ils mis à jour dans CouchDB à l'aide de go-couchdb ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-05 05:01:45997parcourir

Why Are Only Capitalized Struct Fields Updated in CouchDB Using go-couchdb?

La capitalisation a un impact sur le stockage des données dans les structures CouchDB

Lors de l'utilisation de la bibliothèque "github.com/mikebell-org/go-couchdb" pour accéder CouchDB, un problème particulier se pose : seuls les champs de structure avec des lettres initiales en majuscule sont mis à jour dans la base de données inserts.

Exemple :

type Person struct {
    name string
    Age  int
}

Lors de l'insertion d'une instance de personne dans la base de données :

joe := Person{
    name: "mike",
    Age:  190,
}

Seul le champ Âge est ajouté à la base de données. Les autres champs en minuscules, comme le nom, sont omis.

La raison derrière le comportement :

Ce comportement découle de la spécification du langage Go, qui dicte que les champs avec une initiale minuscule les lettres ne sont pas exportées. Par conséquent, le package de sérialisation JSON (par exemple, json) n'inclut ces champs que s'il est explicitement demandé de le faire.

Surmonter le problème :

Pour incorporer des champs en minuscules dans la base de données, utilisez les balises JSON :

type Person struct {
    name string `json:"name"`
    Age  int    `json:"Age"`
}

En spécifiant la balise json, le champ du nom en minuscule est explicitement exposé pour Sérialisation JSON, permettant de le conserver dans la base de données. Reportez-vous à la documentation pour plus de détails sur les balises JSON.

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