ホームページ >バックエンド開発 >Golang >Go で `yaml.Unmarshal()` が空の構造体を返すのはなぜですか?

Go で `yaml.Unmarshal()` が空の構造体を返すのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-07 16:46:13793ブラウズ

Why Does `yaml.Unmarshal()` Return an Empty Struct in Go?

YAML を Go 構造体にアンマーシャリングする

Go では、yaml.Unmarshal() 関数を使用して、YAML データを構造化表現 (構造体など) に解析します。ただし、YAML データを構造体に解析しようとすると、不明な理由で空の構造体が返されます。

解決策は、構造体のフィールドを可視化することにあります。デフォルトでは、構造体フィールドはエクスポートされません。つまり、構造体が定義されているパッケージ内でのみアクセスできます。 YAML データを構造体にアンマーシャリングするには、フィールドをエクスポートする必要があります。

Go 構造体のフィールドをエクスポートするには、フィールド名の最初の文字を大文字にします。たとえば、

type Config struct {
    foo_bar string
}

の代わりに、

type Config struct {
    FooBar string
}

を使用します。これにより、FooBar フィールドがエクスポートされ、パッケージの外部からアクセスできるようになります。この変更を加えた後、yaml.Unmarshal() は YAML データを構造体に正常に解析できるようになります。

以上がGo で `yaml.Unmarshal()` が空の構造体を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。