Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

الدوال التي تعيد أخطاء

جزء من قسم Fundamentals في رحلة GO على Coddy — الدرس 104 من 109.

في لغة Go، عادةً ما تُرجع الدوال error كقيمة إرجاع أخيرة لها للإشارة إلى ما إذا كان هناك خطأ ما.

أنشئ دالة تُرجع كلاً من النتيجة والخطأ:

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("cannot divide by zero")
    }
    return a / b, nil
}

استدعِ الدالة وتعامل مع الخطأ:

func main() {
    result, err := divide(10, 0)
    if err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Println("Result:", result)
    }
}

سيكون الناتج:

Error: cannot divide by zero
challenge icon

التحدي

مبتدئ

في هذا التحدي، ستتدرب على إنشاء دالة تعيد خطأً (error) عند تقديم إدخال غير صالح.

تحتاج إلى إكمال الدالة validateUsername التي تتحقق مما إذا كان اسم المستخدم صالحاً. يكون اسم المستخدم صالحاً إذا كان طوله 3 أحرف على الأقل. إذا كان اسم المستخدم صالحاً، فقم بإرجاع nil للخطأ. أما إذا كان غير صالح، فقم بإرجاع خطأ مع رسالة مناسبة.

الكود الخاص باستدعاء دالتك ومعالجة الخطأ مكتوب بالفعل من أجلك.

ملاحظة: يستخدم هذا التحدي متغيرات محددة مسبقاً بدلاً من إدخال المستخدم.

ورقة مرجعية

تعيد الدوال في لغة Go عادةً error كقيمة إرجاع أخيرة للإشارة إلى ما إذا كان هناك خطأ ما.

أنشئ دالة تعيد كلاً من النتيجة والخطأ:

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("cannot divide by zero")
    }
    return a / b, nil
}

تعامل مع الخطأ عند استدعاء الدالة:

result, err := divide(10, 0)
if err != nil {
    fmt.Println("Error:", err)
} else {
    fmt.Println("Result:", result)
}

أعد nil عندما لا يكون هناك خطأ، واستخدم errors.New() لإنشاء رسائل الخطأ.

جرّب بنفسك

package main

import (
	"errors"
	"fmt"
)

func validateUsername(username string) error {
	// TODO: تحقق مما إذا كان طول اسم المستخدم أقل من 3 أحرف
	// إذا كان كذلك، قم بإرجاع خطأ مع الرسالة "username too short"
	// بخلاف ذلك، قم بإرجاع nil (لا يوجد خطأ)
	
	return nil
}

func main() {
	// اختبار باستخدام اسم مستخدم صالح
	validName := "bob123"
	err1 := validateUsername(validName)
	if err1 != nil {
		fmt.Printf("%s is invalid: %v\n", validName, err1)
	} else {
		fmt.Printf("%s is valid!\n", validName)
	}
	
	// اختبار باستخدام اسم مستخدم غير صالح
	invalidName := "ab"
	err2 := validateUsername(invalidName)
	if err2 != nil {
		fmt.Printf("%s is invalid: %v\n", invalidName, err2)
	} else {
		fmt.Printf("%s is valid!\n", invalidName)
	}
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Fundamentals