هياكل التضمين: متى يتم تفضيل المؤشرات
عند تضمين بنية واحدة داخل أخرى، هناك خياران: استخدام مؤشر أو قيمة مضمنة . لتوجيه هذا القرار، من المهم فهم المواصفات والنظر في مزايا كل نهج.
المؤشرات مقابل القيم المضمنة
وفقًا لمواصفات Go، يمكن الإعلان عن الحقل المجهول (المعروف أيضًا باسم الحقل المضمن) كاسم نوع أو كمؤشر لاسم نوع غير واجهة. هذا يعني أن لديك خيار استخدام النوع log.Logger أو المؤشر *log.Logger لحقل المسجل في المثال التالي:
type Job struct {
Command string
*log.Logger
}
فوائد المؤشرات
تسلط مقالة "التضمين في Go" التي كتبها إريك أوربان الضوء على مزايا تضمين المؤشر، والذي يشار إليه باسم "تضمين المؤشر بواسطة ". وتشمل هذه ما يلي:
مثال على تضمين المؤشر
type Bitmap struct{
data [4][5]bool
}
type Renderer struct{
*Bitmap //Embed by pointer
on uint8
off uint8
}
في هذا المثال، يقوم نوع العارض بتضمين صورة نقطية بواسطة المؤشر. وهذا يعني أنه يمكن لمثيلات متعددة من Renderer مشاركة مثيل واحد من الصورة النقطية وتخصيص سلوكها بشكل مستقل.
القيود الفنية
من المهم ملاحظة أنه لا يمكنك استخدام المؤشرات للمؤشرات أو مؤشرات إلى واجهات كحقول مجهولة. ينبع هذا التقييد من حقيقة أن هذه الأنواع ليس لديها طرق، وهو جانب أساسي من جوانب التضمين. يتم ترقية الأساليب من النوع المضمن إلى نوع التضمين، مما يسمح لك بالوصول إليها مباشرة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3