قيود الفهرسة في Go 1.18 Generics
مع تقديم الأدوية العامة في Go 1.18، يتمتع المطورون بفرصة تنفيذ الخوارزميات التي تعمل مع محددات أنواع. أحد المتطلبات الشائعة هو استخدام الأنواع التي تدعم الفهرسة، مثل المصفوفات والشرائح والخرائط والسلاسل.
قيد قابل للفهرسة
لتقييد معلمة النوع إلى الأنواع القابلة للفهرسة ، ضع في اعتبارك استخدام القيد التالي مع الاتحاد:
type Indexable interface {
~[]byte | ~string
}
قيود القيد القابل للفهرسة
بينما يعمل القيد أعلاه لفهرسة البايتات والسلاسل، هناك قيود على استخدامه مع أنواع أخرى قابلة للفهرسة، مثل الخرائط والمصفوفات :
بسبب هذه القيود، فإن الاتحاد العملي الوحيد الذي يدعم الفهرسة هو []بايت | خيط. يسمح هذا الاتحاد بعمليات الفهرسة ولكنه لا يدعم عمليات النطاق لأنه يفتقر إلى نوع أساسي.
مثال للاستخدام
يوضح المثال التالي كيفية استخدام القيد القابل للفهرسة:
func GetAt [T Indexable] (v T، i int) byte { العودة الخامس[i]
func GetAt[T Indexable](v T, i int) byte {
return v[i]
}
الاستنتاج
بينما يوفر Go 1.18 طريقة لتقييد الأنواع بأنواع قابلة للفهرسة باستخدام اتحاد، فإن قيود هذا القيد تعني أنه عملي فقط لمجموعة محدودة من حالات الاستخدام، وهي فهرسة البايتات والسلاسل.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3