ホームページ > バックエンド開発 > Golang > YAML が空の構造体にアンマーシャリングされるのはなぜですか?

YAML が空の構造体にアンマーシャリングされるのはなぜですか?

Barbara Streisand
リリース: 2024-12-20 02:24:08
オリジナル
561 人が閲覧しました

Why is my YAML unmarshaling to an empty struct?

YAML を構造体にアンマーシャリングする: エクスポートされていないフィールドについて

このコードでは、YAML ドキュメントを Config 構造体に解析しようとしています。ただし、{} で示されているように、結果の構成構造体は空のままになります。これは、構造体フィールドがエクスポートされていないためです。

解決策: 構造体フィールドのエクスポート

YAML アンマーシャリングでは、構造体フィールドをエクスポートする必要があります (大文字で始まる)。それらにアクセスしてデータを設定できます。修正されたコードは次のとおりです。

type Config struct {
    FooBar string `yaml:"foo_bar"`
}
ログイン後にコピー

エクスポートされたフィールドについて

Go では、エクスポートされたフィールドは、宣言されているパッケージの外部からアクセスできます。これは、大文字で始まるフィールドには他のパッケージまたはコードからアクセスできることを意味します。逆に、エクスポートされていないフィールド (小文字で始まる) は、同じパッケージ内でのみアクセスできます。

YAML アンマーシャリングが実行されると、エクスポートされたフィールドが識別され、YAML データから設定されます。元のフィールドがエクスポートされていないため、YAML アンマーシャリングはそれらにアクセスできず、空のままでした。

修正されたコード

エクスポートされる構造体フィールドを更新した後、コードはYAML データが正常に解析され、構成構造体が設定されます:

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

func main() {
    config := ParseYAMLConfig([]byte(configYAMLData))
    fmt.Printf("%v", config) // Outputs: {https://foo.bar}
}
ログイン後にコピー

以上がYAML が空の構造体にアンマーシャリングされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート