حزمة الرئيسية يستورد ( "FMT" "الاختبار" ) سؤال FUNC (أي شيء واجهة {}) { التبديل V: = أي شيء. (اكتب) { سلسلة العلبة: fmt.println (V) Case Int32 ، Int64: fmt.println (V) حالة somecustomtype: fmt.println (V) تقصير: fmt.println ("غير معروف") } }
يستخدم رمز العينة مفتاح النوع لتحديد نوع متغير الإدخال أي شيء. يستورد ( "الاختبار" ) اكتب myint int64 اكتب واجهة inccer { شركة() } func (i *myint) inc () { *أنا = *أنا 1 } Func BenchmarkintMethod (B *testing.b) { أنا: = جديد (myint) incnintmethod (I ، B.N) } Func BenchmarkInterface (B *testing.b) { أنا: = جديد (myint) واجهة Incninterface (I ، B.N) } Func BenchmarkTypesWitch (B *testing.b) { أنا: = جديد (myint) Incnswitch (I ، B.N) } Func BenchmarkTyPeasSertion (B *testing.b) { أنا: = جديد (myint) incnassertion (I ، B.N) } func incnintmethod (i *myint ، n int) { لـ K: = 0 ؛ ك على أجهزة الاختبار المتعددة ، تكشف النتائج باستمرار أن جميع الطرق الأربعة تؤدي بسرعات مماثلة: مكالمات الطريقة المباشرة ، وتطبيقات الواجهة ، وتأكيدات الكتابة ، ومفاتيح النوع. يوضح المثال التالي هذه النتائج:BenchmarkInterface-16 1000000000 2.03 NS/OP BenchMarkTypesWitch-16 2000000000 1.70 NS/OP BenchmarkTypeasSertion-16 2000000000 1.67 ns/op وبالتالي ، فإن استنتاجنا هو أن تأكيدات النوع ومفاتيح النوع في GO لا تتحمل انتقاد أداء ملحوظ بالمقارنة مع منهجيات فحص النوع الأخرى.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3