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

كيف يمكنني استرداد إصدارات الوحدة من Code in Go؟

تم النشر بتاريخ 2024-11-09
تصفح:470

How Can I Retrieve Module Versions from Code in Go?

استرجاع إصدارات الوحدة من Code in Go

في Go، توفر حزمة وقت التشغيل/تصحيح الأخطاء إمكانية الوصول إلى معلومات مفصلة حول تبعيات البرنامج ووحداته . تمكنك هذه الوظيفة من استرداد وعرض إصدارات الوحدة من داخل التعليمات البرمجية.

تقوم وظيفة debug.ReadBuildInfo () بإرجاع بنية BuildInfo التي تحتوي على قائمة بجميع التبعيات المستوردة. يتم تمثيل كل وحدة أو تبعية من خلال بنية الوحدة النمطية، والتي تتضمن الحقول التالية:

    المسار: مسار استيراد الوحدة.
  • الإصدار: إصدار الوحدة.
  • المجموع: المجموع الاختباري لرمز الوحدة.
  • استبدال: الوحدة التي تحل محل هذه الوحدة، إن وجدت.
لاسترداد وعرض إصدارات الوحدة، يمكنك استخدام التعليمات البرمجية مثل هذه:

package main

import (
    "fmt"
    "log"
    "runtime/debug"
)

func main() {
    bi, ok := debug.ReadBuildInfo()
    if !ok {
        log.Printf("Failed to read build info")
        return
    }

    for _, dep := range bi.Deps {
        fmt.Printf("Module: %s, Version: %s\n", dep.Path, dep.Version)
    }
}
سيعمل هذا المثال على تحميل الوحدة ومعلومات التبعيات في بنية BuildInfo وتكرارها على التبعيات، وطباعة مساراتها وإصداراتها. يمكنك تعديل هذا الرمز لعرض المعلومات بالتنسيق الذي تريده، مثل المثال الموجود في السؤال.

يتجنب هذا الأسلوب الحاجة إلى استخدام ldflags لتعيين الإصدارات خارجيًا. وبدلاً من ذلك، فهو يعتمد على المعلومات المقدمة من Go نفسه، مما يجعله حلاً موثوقًا وقابلاً للتطوير لإدارة إصدارات الوحدات.

أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3