Maison >développement back-end >Golang >Comment puis-je contrôler quels champs de structure sont exportés dans Go ?

Comment puis-je contrôler quels champs de structure sont exportés dans Go ?

DDD
DDDoriginal
2024-12-01 00:34:11172parcourir

How Do I Control Which Struct Fields Are Exported in Go?

Exportation de champs Struct dans Go

Lorsque vous utilisez des structures pour représenter des données dans Go, il est important de prendre en compte la capitalisation des noms de champs. Par convention, seuls les champs commençant par une majuscule sont exportés, les rendant visibles en dehors du package actuel.

Problème de CouchDB Struct

Dans le code fourni, la structure Person a un champ nommé Age avec une lettre majuscule, tandis que le nom est en minuscule. Par conséquent, seul le champ Age est exporté lorsque la structure est transmise à la méthode PostDocument de la bibliothèque CouchDB.

Marshaling et visibilité du champ

Le même principe s'applique lors du marshaling JSON à l'aide du package json. Seuls les champs exportés (commençant par une lettre majuscule) seront inclus dans la sortie. Ce comportement est décrit dans la spécification du langage Go : http://golang.org/ref/spec#Exported_identifiers.

Surmonter l'invisibilité des champs

Pour inclure des champs en minuscules dans la base de données ou la sortie JSON, utilisez des "tags" dans la définition de la structure. Par exemple :

type Sample struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

Les balises fournissent un mappage explicite entre les noms de champs exportés (Nom et Âge) et leurs équivalents minuscules (nom et âge).

En utilisant des balises ou en suivant les Convention d'utilisation des noms de champs en majuscules pour les champs exportés, vous pouvez vous assurer que tous les champs de vos structures sont traités correctement lors de l'interaction avec des bibliothèques tierces ou de l'exécution d'opérations 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