كيفية استخدام الواجهة كنموذج في 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