Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menyahmarshal Struktur Terbenam dalam Go?

Bagaimana untuk Menyahmarshal Struktur Terbenam dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-11-04 12:13:30
asal
847 orang telah melayarinya

How to Unmarshal Embedded Structs in Go?

Menyahmarshalling Struktur Terbenam dalam Go

Artikel ini menangani isu unmarshalling data JSON ke dalam struct yang mengandungi struct terbenam. Contoh yang disediakan, di mana struct Dalam dibenamkan dalam struct Luar, menunjukkan bahawa kaedah lalai UnmarshalJSON untuk Dalam dipanggil dan hanya medan Data diisi, meninggalkan medan Num Luar kosong.

Sebabnya kerana tingkah laku ini terletak pada mekanisme struktur tertanam Go. Apabila struct terbenam dinyahmarshall, proses unmarshalling secara langsung menyasarkan struct terbenam dan mengabaikan medan struct luar.

Untuk menangani perkara ini, penyelesaian yang lebih mudah dan lebih cekap dicadangkan: menjadikan struct Dalaman medan eksplisit dalam struct Outer.

Dengan mengisytiharkan Inner secara eksplisit sebagai medan, kaedah UnmarshalJSON bagi Outer struct dipanggil dengan keseluruhan data JSON. Dalam kaedah ini, medan Data Inner boleh diisi menggunakan kaedah UnmarshalJSON struct Dalaman terbenam, manakala medan Num boleh diisi secara berasingan. Pendekatan ini memastikan bahawa kedua-dua medan struct Luar diisi dengan betul semasa unmarshalling.

Berikut ialah contoh yang berfungsi untuk menggambarkan penyelesaian:

<code class="go">type Outer struct {
    I Inner     // Inner as explicit field
    Num int `json:"Num"`
}</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menyahmarshal Struktur Terbenam dalam Go?. 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