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 サイトの他の関連記事を参照してください。