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

كيف يتم تمثيل الواجهات في جدول Go: (القيمة، النوع) أو جدول الطريقة؟

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

How are Interfaces Represented in Go: (Value, Type) Pair or Method Table?

فهم تمثيل الواجهة في Go

عند العمل مع الواجهات في Go، من المهم فهم تمثيلها الأساسي. يلقي مصدران رئيسيان الضوء على هذا الموضوع، لكن وجهات نظرهما تختلف.

تقدم مقالة "قوانين الانعكاس" (http://blog.golang.org/laws-of-reflection) مفهوم الواجهة يحتوي على زوج (قيمة، نوع)، كما هو موضح في مثال r io.Reader. يتضمن هذا الزوج القيمة tty ونوعها *os.File.

بدلاً من ذلك، تؤكد المقالة الأخرى على أن الواجهات تحتوي فقط على طرق لتلبية مواصفات الواجهة. في مثال Stringer الذي يحمل النوع Binary، يسرد الجدول itable (جدول أسلوب الواجهة) فقط الطرق الضرورية لتنفيذ السلسلة، باستثناء الطرق الأخرى المحددة في النوع الثنائي.

للتوفيق بين هذه المنظورات، ضع في اعتبارك الواجهات في Go كـ "كائنات مجمعة" في وقت التشغيل. وهي توفر معلومات حول كائن آخر، وهو itable، الذي يرشد وقت التشغيل في تنفيذ الأساليب على الكائن الملتف. على سبيل المثال، عند استدعاء القراءة على r، يستخدم وقت التشغيل itable للانتقال إلى الوظيفة المقابلة داخل تخطيط نوع الملف os.

يوفر الانعكاس، كما هو موضح في مقالة "قوانين الانعكاس"، طريقة ملائمة طريقة لاستكشاف هذا التمثيل من خلال تعريض زوج (القيمة، النوع) من خلال طريقتي Reflect.ValueOf وreflect.TypeOf.

بيان الافراج أعيد طبع هذه المقالة على: 1729758157 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3