تحليل ملف YAML في Go
يتضمن تحليل ملفات YAML في Go استخدام مكتبة YAML المتاحة من خلال gopkg.in/yaml.v2. تم تصميم الكود المقدم لتحليل ملف YAML مع أزواج قيمة المفتاح المتداخلة، مثل ما يلي:firewall_network_rules: القاعدة 1: src: مضيف blablabla dst: blabla-hostnamefirewall_network_rules: rule1: src: blablabla-host dst: blabla-hostnameومع ذلك، تنشأ مشكلات عند محاولة تحليل أزواج القيمة الرئيسية دون القيم المصاحبة. لا تحدد البنية المطبقة هذه القيم، مما يؤدي إلى حدوث خطأ أثناء التحليل. لمعالجة هذه المشكلة، فكر في دمج مثال YAML واقعي، مثل Service.yaml من Google Cloud أو Kubernetes:apiVersion: v1 النوع: الخدمة البيانات الوصفية: الاسم: اسمي مساحة الاسم: افتراضية التسميات: router.deis.io/routable: "صحيح" الشروح: router.deis.io/domains: "" المواصفات: النوع: نوديبورت محدد: التطبيق: اسمي الموانئ: - الاسم: http المنفذ: 80 المنفذ المستهدف: 80 - الاسم: https المنفذ: 443 targetPort: 443
apiVersion: v1 kind: Service metadata: name: myName namespace: default labels: router.deis.io/routable: "true" annotations: router.deis.io/domains: "" spec: type: NodePort selector: app: myName ports: - name: http port: 80 targetPort: 80 - name: https port: 443 targetPort: 443يوضح هذا المثال العلاقات المتداخلة بين القيمة الرئيسية ويوفر حالة استخدام عملية. قد تشبه بنية Go المقابلة ما يلي:
type Service struct { سلسلة APIVersion `yaml:"apiVersion"` سلسلة نوع `yaml:"kind"` بنية البيانات الوصفية { سلسلة الاسم `yaml:"name"` سلسلة مساحة الاسم `yaml:"مساحة الاسم"` هيكل التسميات { سلسلة RouterDeisIoRoutable `yaml:"router.deis.io/routable"` } `yaml:"labels"` هيكل التعليقات التوضيحية { سلسلة RouterDeisIoDomains `yaml:"router.deis.io/domains"` } `yaml:"التعليقات التوضيحية"` } هيكل المواصفات { اكتب السلسلة `yaml:"type"` هيكل المحدد { سلسلة التطبيق `yaml:"app"` } المنافذ [] البنية { سلسلة الاسم `yaml:"name"` ميناء int `yaml:"port"` TargetPort int `yaml:"targetPort"` NodePort int `yaml:"nodePort,omitempty"` } `yaml:"ports"` }
firewall_network_rules: rule1: src: blablabla-host dst: blabla-hostnameلتبسيط العملية، توفر خدمات مثل yaml-to-go وjson-to-go أدوات ملائمة لتحويل بنيات YAML إلى Go، مما يجعل مهمة التحليل أكثر قابلية للإدارة.أخيرًا، لإلغاء تنظيم ملف YAML في البنية الخاصة بك، يمكنك استخدام الكود التالي:varservice Service يخطئ := yaml.Unmarshal(yourFile, &service) إذا أخطأت! = لا شيء { الذعر (خطأ)
firewall_network_rules: rule1: src: blablabla-host dst: blabla-hostnameيتيح هذا الأسلوب الوصول إلى البيانات التي تم تحليلها من خلال بنية الخدمة، مما يسمح لك بالتفاعل مع معلومات ملف YAML في تطبيق Go الخاص بك.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3