"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية إلغاء تنظيم العقد المضمنة ذات الأنواع المختلفة باستخدام الواجهات في mgo (Go)؟

كيفية إلغاء تنظيم العقد المضمنة ذات الأنواع المختلفة باستخدام الواجهات في mgo (Go)؟

تم النشر بتاريخ 2024-11-10
تصفح:739

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

كيفية استخدام الواجهة كنموذج في mgo (Go)

عند التعامل مع سير العمل الذي يحتوي على عقد مدمجة متعددة من أنواع مختلفة، يعد الاستفادة من واجهات Go أسلوبًا شائعًا. ومع ذلك، فإنه يمثل تحديًا عند محاولة إلغاء تنظيم هذه المستندات باستخدام mgo.

لمعالجة هذه المشكلة، لا يمكنك تضمين واجهة مباشرة داخل المستند. وذلك لأن وحدة فك الترميز تفتقر إلى معلومات النوع الضرورية لإنشاء المثيل المناسب.

يتضمن الحل القابل للتطبيق إنشاء بنية مجمعة لتخزين كل من العقدة الفعلية ونوعها:

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

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

لإكمال الإعداد، يجب عليك تنفيذ وظيفة SetBSON على NodeWithType. ستقوم هذه الوظيفة بفك تشفير سلسلة النوع، وإنشاء نوع العقدة الصحيح بناءً على تلك السلسلة، ثم إلغاء تنظيم المستند في المثيل الذي تم إنشاؤه حديثًا. يضمن تنفيذ SetBSON أن يتم إلغاء تنظيم كل عقدة مضمنة بشكل صحيح في النوع الملموس الصحيح.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3