Rumah > pembangunan bahagian belakang > Golang > Mengapa YAML saya menyahmarshaling kepada struct kosong?

Mengapa YAML saya menyahmarshaling kepada struct kosong?

Barbara Streisand
Lepaskan: 2024-12-20 02:24:08
asal
621 orang telah melayarinya

Why is my YAML unmarshaling to an empty struct?

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"`
}
Salin selepas log masuk

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}
}
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa YAML saya menyahmarshaling kepada struct kosong?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan