جولة Go التفاعلية بالعربي › التوابع والواجهات 5 / 7 السابق التالي

تمرين: الأخطاء

تمرين: الأخطاء

انسخ دالتك Sqrt من التمرين السابق وعدّلها لتُرجع قيمة من النوع error.

Sqrt ينبغي أن تُرجع قيمة خطأ غير معدومة عند إعطائها عددًا سالبًا، لأنها لا تدعم الأعداد المركّبة.

أنشئ نوعًا جديدًا

type ErrNegativeSqrt float64

واجعله ينفّذ error بإعطائه

func (e ErrNegativeSqrt) Error() string

تابعًا بحيث يُرجع ErrNegativeSqrt(-2).Error() القيمة "cannot Sqrt negative number: -2".

ملاحظة: سيؤدي استدعاء fmt.Sprint(e) داخل التابع Error إلى دخول البرنامج في حلقة لا نهائية. يمكنك تجنّب ذلك بتحويل e أولًا: fmt.Sprint(float64(e)). لماذا؟

غيّر دالتك Sqrt لتُرجع قيمة من النوع ErrNegativeSqrt عند إعطائها عددًا سالبًا.

النص الأصلي بالإنجليزية

Exercise: Errors

Copy your Sqrt function from the earlier exercise and modify it to return an error value.

Sqrt should return a non-nil error value when given a negative number, as it doesn't support complex numbers.

Create a new type

type ErrNegativeSqrt float64

and make it an error by giving it a

func (e ErrNegativeSqrt) Error() string

method such that ErrNegativeSqrt(-2).Error() returns "cannot Sqrt negative number: -2".

Note: A call to fmt.Sprint(e) inside the Error method will send the program into an infinite loop. You can avoid this by converting e first: fmt.Sprint(float64(e)). Why?

Change your Sqrt function to return an ErrNegativeSqrt value when given a negative number.

هذا الدرس للقراءة فقط؛ جرّب المثال في الدرس التالي.

استعادة المثال الأصلي؟

ستُحذف تعديلاتك على شيفرة هذا الدرس، ويعود المثال كما ورد في الكتاب. لا يتغيّر اختيارك لمحرك التشغيل.