"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تمرير الوسائط المتغيرة إلى fmt.Sprintf في تنفيذ "errors.New" المخصص؟

كيفية تمرير الوسائط المتغيرة إلى fmt.Sprintf في تنفيذ "errors.New" المخصص؟

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

How to Pass Variable Arguments to `fmt.Sprintf` in a Custom `errors.New` Implementation?

كيفية تنفيذ نسخة من الأخطاء. جديد يقبل نفس المعلمات مثل fmt.Sprintf

لتنفيذ نسخة من الأخطاء. جديد يقبل نفس المعلمات مثل fmt.Sprintf، يمكن للمرء استخدام وظيفة NewError، والتي تم تعريفها على النحو التالي:

func NewError(format string, a ...interface{}) error {
    return errors.New(fmt.Sprintf(format, a))
}

ومع ذلك، هذه الوظيفة لا تعمل بشكل صحيح لأن العدد المتغير للوسائط في a يصبح معلمة صفيف واحدة في NewError، مما يتسبب في قيام Sprintf بملء معلمة واحدة فقط في سلسلة التنسيق.

لإصلاح هذه المشكلة، يجب وضع علامة على المعلمة النهائية في NewError كعدد متغير من الوسائط باستخدام ... بناء الجملة:

func NewError(format string, a ...interface{}) error {
    return errors.New(fmt.Sprintf(format, a...))
}

يسمح هذا لـ fmt.Sprintf بتفسير عدد متغير من الوسائط.

أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3