تمرين: الأخطاء
تمرين: الأخطاء
انسخ دالتك 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.
هذا الدرس للقراءة فقط؛ جرّب المثال في الدرس التالي.