Menyahmarshall YAML ke dalam Struct: Understanding Unexported Fields
Dalam kod ini, anda cuba menghuraikan dokumen YAML ke dalam struct Config. Walau bagaimanapun, struktur konfigurasi yang terhasil kekal kosong, seperti yang ditunjukkan oleh {}. Ini kerana medan struct anda tidak dieksport.
Penyelesaian: Mengeksport Medan Struktur
YAML Unmarshaling memerlukan medan struct untuk dieksport (bermula dengan huruf besar) supaya ia boleh mengakses dan mengisinya. Berikut ialah kod yang diperbetulkan:
type Config struct { FooBar string `yaml:"foo_bar"` }
Memahami Medan Eksport
Dalam Go, medan yang dieksport boleh diakses di luar pakej yang diisytiharkan. Ini bermakna medan yang bermula dengan huruf besar boleh diakses oleh pakej atau kod lain. Sebaliknya, medan yang tidak dieksport (bermula dengan huruf kecil) hanya boleh diakses dalam pakej yang sama.
Apabila YAML Unmarshaling dilakukan, medan yang dieksport dikenal pasti dan diisi daripada data YAML. Memandangkan medan asal anda tidak dieksport, YAML Unmarshaling tidak dapat mengaksesnya dan membiarkannya kosong.
Kod Dibetulkan
Selepas mengemas kini medan struct untuk dieksport, kod akan berjaya menghuraikan data YAML dan mengisi struktur konfigurasi:
type Config struct { FooBar string `yaml:"foo_bar"` } func main() { config := ParseYAMLConfig([]byte(configYAMLData)) fmt.Printf("%v", config) // Outputs: {https://foo.bar} }
Atas ialah kandungan terperinci Mengapa YAML saya menyahmarshaling kepada struct kosong?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!