باستخدام YAML ، يمكنك كتابة برامج Go التي تتفاعل مع الآخرين باستخدام تنسيق البيانات. إنه مقروء من قبل الإنسان ، لذا من السهل التعامل معه.

YAML هو تنسيق تسلسل بيانات شائع يمكن قراءته من قبل الإنسان. لغة البيانات مناسبة لملفات التكوين وتبادل البيانات وتخزين البيانات المنظمة.

تستخدم العديد من المشاريع القائمة على Go ، بما في ذلك Gqlgen وأدوات الإنشاء مثل Docker-compose ، ملفات YAML للتكوين. بصفتك مطور Go ، يمكنك استخدام أدوات مثل حزمة yaml لتحليل بيانات YAML ومعالجتها.

فهم ملف YAML

تتكون ملفات YAML (YAML Ain't Markup Language) من أزواج وقوائم وهياكل متداخلة. تم تصميم بنية YAML لتكون جذابة بصريًا وسهلة القراءة. هذا يجعله خيارًا شائعًا لملفات التكوين ، مع Kubernetes وغيرها أدوات التنسيق باستخدام YAML.

على عكس تنسيقات البيانات الأخرى مثل XML و JSON، يعتمد YAML على المسافة البادئة لتمثيل التسلسل الهرمي.

إليك كيفية تحديد الحقول الأساسية باستخدام YAML:

اسم:جونظبية
عمر:30
بريد إلكتروني:[email protected]

تفصل النقطتان المفتاح عن قيمته ، والتي يمكن أن تكون أي نوع بيانات YAML صالح بما في ذلك السلاسل أو الأرقام أو القيم المنطقية أو الهياكل المتداخلة.

instagram viewer

تسمح لك القوائم بتمثيل مجموعة من القيم. لتحديد قائمة في YAML ، استخدم واصلة متبوعة بمسافة قبل كل عنصر:

الفاكهة:
-تفاحة
-موز
-البرتقالي

هنا، الفاكهة هو المفتاح ، وتحدد الأسطر الموصولة قائمة بالفواكه.

يدعم YAML أيضًا الهياكل المتداخلة ، مما يتيح لك تمثيل التسلسلات الهرمية للبيانات المعقدة:

شخص:
اسم:جونظبية
عمر:30
عنوان:
شارع:123رئيسيشارع
مدينة:أي بلدة
دولة:الولايات المتحدة الأمريكية

ال شخص يحتوي المفتاح على مجموعة أخرى من أزواج المفتاح والقيمة ، مما يشكل بنية متداخلة. ال عنوان key لديه مجموعته الخاصة من أزواج القيمة الرئيسية.

العمل مع YAML in Go

لا يوفر Go وظائف مضمنة لملفات YAML ، ولكن هناك حزم تابعة لجهات خارجية تقوم بذلك.

ال يامل طَرد هي حزمة شائعة للعمل مع ملفات YAML. أنه يوفر:

  • ميزات التحليل والتسلسل.
  • دعم علامات YAML.
  • الامتثال الشامل لمواصفات YAML.
  • سيطرة دقيقة على التنظيم وفتح التنظيم.
  • معالجة الأخطاء.
  • التوافق مع إصدارات YAML المتعددة.

افتح Terminal وقم بتشغيل هذا الأمر لتثبيت حزمة YAML لمشروعك:

# تثبيت الإصدار 3 من حزمة yaml
اذهب واحصل على gopkg.in/yaml.v3

بعد تثبيت الحزمة ، يمكنك استخدام ملف يستورد بيان لاستيراد الحزمة إلى ملفات Go الخاصة بك.

يستورد"gopkg.in/yaml.v3"

يمكنك اختيار عدة إصدارات من YAML بناءً على إصدار مواصفات YAML التي تريد استخدامها.

قراءة وتحليل YAML للذهاب إلى هياكل البيانات

إحدى المهام الأساسية التي سترغب في تنفيذها هي تحليل هياكل بيانات YAML to Go. ال يامل توفر الحزمة واجهة برمجة تطبيقات بسيطة ومريحة للقيام بذلك.

ضع في اعتبارك بيانات YAML هذه:

# الإخراج

شخص:
اسم:جونظبية
عمر:30
بريد إلكتروني:[email protected]

يمكنك تحديد بنية مقابلة بأسماء الحقول المتطابقة لتحليل بيانات YAML في بنية بيانات Go باستخدام يامل طَرد.

// يمثل هيكل الشخص مفتاح الشخص في YAML.
يكتب شخص هيكل {
اسم خيط"yaml:" الاسم "`
عمر int`yaml:" العمر "`
بريد إلكتروني خيط`yaml:" بريد إلكتروني "`
}

ال يامل تساعد علامات الهيكل في تعيين مفاتيح YAML لحقول البنية أثناء عملية التحليل.

إليك كيفية تحليل بيانات YAML في بنية بيانات Go:

يستورد (
"FMT"
"gopkg.in/yaml.v3"
"نظام التشغيل"
)

funcرئيسي() {
// اقرأ ملف الإخراج. yaml
البيانات ، يخطئ: = نظام التشغيل. إقرا الملف("الإخراج. yaml")

لو يخطئ! لا شيء {
ذعر(يخطئ)
}

// إنشاء شخص لهيكلة وإلغاء تسلسل البيانات في هذا الهيكل
فار شخص شخص

لو يخطئ: = yaml. Unmarshal (البيانات ، والشخص) ؛ يخطئ! لا شيء {
ذعر(يخطئ)
}

// طباعة الحقول على وحدة التحكم
FMT. برنتف ("الاسم:٪ s \ n"، شخص. اسم)
FMT. برنتف ("العمر:٪ d \ n"، شخص. عمر)
FMT. برنتف ("البريد الإلكتروني:٪ s \ n"، شخص. بريد إلكتروني)
}

ال رئيسي وظيفة يقرأ الإخراج ملف بامتداد ioutil الحزمة إقرا الملف وظيفة. ثم يقوم بإنشاء مثيل لملف شخص هيكل ويوزع البيانات في الهيكل مع غير مارشال طريقة يامل طَرد. ال رئيسي تقوم الوظيفة بطباعة الحقول من مثيل البنية ؛ ها هي النتيجة:

إدخال البيانات في ملف YAML

يمكنك استخدام هياكل بيانات Go لإدراج البيانات في ملفات YAML. إليك كيفية إدراج البيانات في ملف YAML مع مثيل شخص هيكل:

funcرئيسي() {
// إنشاء مثيل لهيكل الشخص باستخدام بيانات نموذجية
الشخص: = شخص {
اسم: "فلان الفلاني",
عمر: 30,
بريد إلكتروني: "[email protected]",
}

// قم بتسلسل هيكل الشخص إلى تنسيق YAML
البيانات ، يخطئ: = yaml. المشير (والشخص)

لو يخطئ! لا شيء {
ذعر(يخطئ)
}

// اكتب بيانات YAML المتسلسلة إلى ملف يسمى "output.yaml"
يخطئ = نظام التشغيل. اكتب ("الإخراج. yaml"، بيانات، 0644)

لو يخطئ! لا شيء {
ذعر(يخطئ)
}

FMT. Println ("البيانات مكتوبة على output.yaml")
}

ال شخص المتغير هو مثيل لـ شخص نوع الهيكل. استخدم ال مارشال طريقة يامل الحزمة لتحويل البنية إلى YAML. يأخذ مثيل البنية ويعيد تمثيل YAML وخطأ.

يمكنك استخدام ال اكتب وظيفة نظام التشغيل حزمة لكتابة بيانات YAML إلى ملفك (في هذه الحالة ، الإخراج).

بعد إجراء عملية تسلسل وكتابة لبيانات YAML بنجاح ، فإن ملف رئيسي وظيفة طباعة رسالة إلى وحدة التحكم.

يمكنك تنظيم وإلغاء تنظيم YAML في الخرائط كما تفعل مع الهياكل.

في ما يلي مثال على تنظيم وإلغاء تنظيم بيانات YAML بالخرائط:

طَرد رئيسي

يستورد (
"FMT"
"gopkg.in/yaml.v3"
)

funcرئيسي() {
// بيانات التنظيم
البيانات: = خريطة[خيط]واجهه المستخدم{}{
"اسم": "فلان الفلاني",
"عمر": 30,
"بريد إلكتروني": "[email protected]",
}

// تنظيم البيانات في YAML
yamlData ، يخطئ: = yaml. المشير (بيانات)

لو يخطئ! لا شيء {
FMT. Println ("خطأ أثناء التنظيم:"، يخطئ)
يعود
}

FMT. Println ("تم تنظيم بيانات YAML:")
FMT. Println (خيط(yamlData))

// إلغاء تنظيم بيانات YAML في الخريطة
فار بيانات غير منظمة خريطة[خيط]واجهه المستخدم{}
يخطئ = yaml. Unmarshal (yamlData، & unmarshalledData)

لو يخطئ! لا شيء {
FMT. Println ("خطأ أثناء إلغاء التنظيم:"، يخطئ)
يعود
}

FMT. Println ("\ n بيانات غير منظمة:")
FMT. Println (unmarshalledData)
}

العملية هي نفسها بالنسبة لـ أنواع الهيكل، باستثناء أنك تستخدم الخرائط لتمثيل البيانات. ال غير مارشال و مارشال طرق تعمل لكلا نوعي البيانات.

يستخدم Docker Compose ملفات YAML للتكوين

يوفر العمل مع ملفات YAML في Go أسلوبًا قويًا ومرنًا لإدارة بيانات التكوين.

إحدى حالات الاستخدام البارزة لملفات YAML هي Docker Compose ، حيث يعمل ملف YAML كتكوين لتعريف تطبيقات Docker متعددة الحاويات وإدارتها.

يستفيد Docker Compose من بساطة YAML وقابليته للقراءة لتحديد الخدمات والشبكات والأحجام والمكونات الأخرى للتطبيقات المعبأة في حاويات لتسهيل تنسيق الحاويات.