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

كيفية تجنب تكرار التعليمات البرمجية للوظائف ذات الحقول المشتركة في Golang؟

تم النشر بتاريخ 2024-12-23
تصفح:399

How to Avoid Code Repetition for Functions with Shared Fields in Golang?

تجنب تكرار التعليمات البرمجية للوظائف ذات الحقول المشتركة في Golang

لمنع تكرار التعليمات البرمجية عند كتابة وظائف لبنيات متعددة ذات حقول متطابقة، ضع في اعتبارك النهج التالي:

بدلاً من تحديد وظائف منفصلة لكل بنية، قم بإنشاء نوع مخصص للحقل المشترك، مثل سلسلة الإصدار. يمكن أن يعمل هذا النوع كمستقبل للوظيفة التي تريد تنفيذها.

type Version string

func (v Version) PrintVersion() {
    fmt.Println("Version is", v)
}
في بنياتك، قم بتضمين النوع المخصص كحقل باستخدام التركيب:

type Game struct {
    Name               string
    MultiplayerSupport bool
    Genre              string
    Version
}

type ERP struct {
    Name               string
    MRPSupport         bool
    SupportedDatabases []string
    Version
}
الآن، يمكنك الوصول إلى حقل الإصدار وطباعته من كلا البنيتين باستخدام الطريقة المرفقة بالنوع المخصص:

func main() {

    g := Game{
        "Fear Effect",
        false,
        "Action-Adventure",
        "1.0.0",
    }

    g.PrintVersion()
    // Version is 1.0.0


    e := ERP{
        "Logo",
        true,
        []string{"ms-sql"},
        "2.0.0",
    }

    e.PrintVersion()
    // Version is 2.0.0

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

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

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

Copyright© 2022 湘ICP备2022001581号-3