الحصول على قائمة بأسماء الطرق من الواجهة
في Go، يسمح التفكير بفحص البنية الداخلية للبرنامج ومعالجتها في وقت التشغيل . يتضمن ذلك القدرة على الوصول إلى معلومات حول نوع الواجهة، مثل أسماء الطرق الخاصة بها.
خذ بعين الاعتبار الواجهة التالية:
type FooService interface {
Foo1(x int) int
Foo2(x string) string
}
للحصول على قائمة بأسماء الطرق لهذه الواجهة باستخدام الانعكاس:
t := reflect.TypeOf((*FooService)(nil)).Elem()
يسترجع هذا السطر Reflect.Type للنوع الملموس الذي ينفذ واجهة FooService.
for i := 0; i تقوم الدالة NumMethod () بإرجاع عدد الطرق في الواجهة.
- احصل على أسماء الطرق:
]s = append(s, t.Method(i).Name)
ترجع الدالة Method(i) كائن Reflect.Method الذي يمثل الطريقة في الفهرس i. يحتوي حقل الاسم لهذا الكائن على اسم الطريقة.ستحتوي القائمة الناتجة على أسماء الطرق ["Foo1"، "Foo2"].التفسيرات:
يتم استخدام بناء الجملة (*FooService)(nil) لإنشاء مؤشر إلى مثيل مجهول لواجهة FooService. يعد هذا ضروريًا للحصول على نوع الانعكاس للواجهة. -
تقوم طريقة Elem () بإرجاع نوع الانعكاس للنوع الملموس الذي ينفذ الواجهة، بدلاً من نوع الواجهة نفسها. ]تقوم الدالة NumMethod() بإرجاع عدد الطرق المعلنة في الواجهة، حتى لو كان النوع الملموس يطبق طرقًا إضافية.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3