Maison > développement back-end > Golang > Pourquoi mon YAML est-il décomposé en une structure vide ?

Pourquoi mon YAML est-il décomposé en une structure vide ?

Barbara Streisand
Libérer: 2024-12-20 02:24:08
original
562 Les gens l'ont consulté

Why is my YAML unmarshaling to an empty struct?

Désagrégation de YAML dans une structure : compréhension des champs non exportés

Dans ce code, vous essayez d'analyser un document YAML dans une structure de configuration. Cependant, la structure de configuration résultante reste vide, comme indiqué par {}. En effet, vos champs de structure ne sont pas exportés.

Solution : Exporter les champs de structure

Le démarshaling YAML nécessite que les champs de structure soient exportés (en commençant par des lettres majuscules) afin qu'ils peuvent y accéder et les remplir. Voici le code corrigé :

type Config struct {
    FooBar string `yaml:"foo_bar"`
}
Copier après la connexion

Comprendre les champs exportés

Dans Go, les champs exportés sont accessibles en dehors du package où ils sont déclarés. Cela signifie que les champs commençant par des lettres majuscules sont accessibles par d'autres packages ou codes. À l'inverse, les champs non exportés (commençant par des lettres minuscules) ne sont accessibles qu'au sein du même package.

Lorsque le YAML Unmarshaling est effectué, les champs exportés sont identifiés et renseignés à partir des données YAML. Étant donné que vos champs d'origine n'étaient pas exportés, YAML Unmarshaling n'a pas pu y accéder et les a laissés vides.

Code corrigé

Après la mise à jour des champs de structure à exporter, le code analysera avec succès les données YAML et remplira la structure de configuration :

type Config struct {
    FooBar string `yaml:"foo_bar"`
}

func main() {
    config := ParseYAMLConfig([]byte(configYAMLData))
    fmt.Printf("%v", config) // Outputs: {https://foo.bar}
}
Copier après la connexion

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