على سبيل المثال ، ضع في اعتبارك ملفات 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