"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تحليل حقول Yaml ديناميكيًا إلى مجموعة محدودة من الهياكل؟

كيفية تحليل حقول Yaml ديناميكيًا إلى مجموعة محدودة من الهياكل؟

نشر في 2025-03-13
تصفح:800

How to Dynamically Parse YAML Fields into a Finite Set of Structs in Go?

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

على سبيل المثال ، ضع في اعتبارك ملفات yaml التالية: المواصفات: Foval: 4

النوع: "BAR" المواصفات: Barval: 5

والهياكل المقابلة للحلية:
kind: "foo"
spec:
  fooVal: 4
kind: "bar"
spec:
  barVal: 5
وتعديل بنية المواصفات لاستخدامه:

type Spec struct {
    Kind string      `yaml:"kind"`
    Spec interface{} `yaml:"spec"`
}

type Foo struct {
    FooVal int `yaml:"fooVal"`
}

type Bar struct {
    BarVal int `yaml:"barVal"`
}
مع هذه التغييرات ، يمكن أن تكون وظيفة unmarshalyaml للمواصفات تحليل حقل المواصفات بشكل ديناميكي و nunmarshal في نوع بنية محددة:

النوع S المواصفات اكتب T struct { S `Yaml:" ، inline "` Spec Yamlnode `Yaml:" spec "` } OBJ: = & t {} إذا err: = unmarshal (obj) ؛ err! = nil { إرجاع خطأ } *s = spec (obj.s) تبديل S.Kind { حالة "فو": S.Spec = جديد (فو) حالة "شريط": S.Spec = جديد (شريط) تقصير: الذعر ("نوع غير معروف") } إرجاع obj.spec.unmarshal (S.Spec) }

يوفر هذا النهج حلاً أكثر أناقة وفعالية لحلية اليامل تحليلًا ديناميكيًا في مجموعة محدودة من الهياكل ، مما يجعل ملفات الكود وملفات YAML أكثر نظافة وأسهل في الإدارة.
            
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3