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 }
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!