Bagaimana untuk Menyahmarshal Nod Terbenam Pelbagai Jenis Menggunakan Antara Muka dalam mgo (Go)?

Patricia Arquette
Lepaskan: 2024-10-29 06:10:30
asal
529 orang telah melayarinya

 How to Unmarshal Embedded Nodes of Different Types Using Interfaces in mgo (Go)?

Cara Menggunakan Antara Muka Sebagai Model dalam mgo (Go)

Apabila berurusan dengan aliran kerja yang mengandungi berbilang nod terbenam daripada jenis yang berbeza, memanfaatkan antara muka Go ialah pendekatan biasa. Walau bagaimanapun, ia memberikan cabaran apabila cuba menyahmarshal dokumen ini menggunakan mgo.

Untuk menangani isu ini, anda tidak boleh memasukkan antara muka secara langsung dalam dokumen. Ini kerana penyahkod kekurangan maklumat jenis yang diperlukan untuk mencipta contoh yang sesuai.

Penyelesaian yang berdaya maju melibatkan mencipta struct pembalut untuk menyimpan kedua-dua nod sebenar dan jenisnya:

type NodeWithType struct {
   Node Node `bson:"-"`
   Type string
}

type Workflow struct {
   CreatedAt time.Time
   StartedAt time.Time
   CreatedBy string
   Nodes []NodeWithType
}
Salin selepas log masuk

Kepada melengkapkan persediaan, anda mesti melaksanakan fungsi SetBSON pada NodeWithType. Fungsi ini akan menyahkod rentetan jenis, membuat instantiate jenis nod yang betul berdasarkan rentetan itu, dan kemudian menyahmarshal dokumen ke dalam contoh yang baru dibuat. Melaksanakan SetBSON memastikan setiap nod terbenam dibongkar dengan betul ke dalam jenis konkrit yang betul.

Atas ialah kandungan terperinci Bagaimana untuk Menyahmarshal Nod Terbenam Pelbagai Jenis Menggunakan Antara Muka dalam mgo (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