إنشاء أخطاء بسيطة
جزء من قسم Fundamentals في رحلة GO على Coddy — الدرس 106 من 109.
في لغة Go، يمكنك إنشاء أخطاء مخصصة باستخدام الدالة errors.New() من المكتبة القياسية.
استورد حزمة errors:
import (
"errors"
"fmt"
)قم بإنشاء خطأ بسيط مع رسالة:
func divide(a, b int) (int, 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التحدي
مبتدئفي هذا التحدي، ستتدرب على إنشاء خطأ بسيط في Go باستخدام دالة errors.New().
لديك دالة تتحقق مما إذا كان اسم المستخدم صالحاً. يعتبر اسم المستخدم صالحاً إذا كان يتكون من 5 أحرف على الأقل. مهمتك هي إكمال الدالة عن طريق إرجاع خطأ مناسب عندما يكون اسم المستخدم قصيراً جداً.
ورقة مرجعية
أنشئ أخطاءً مخصصة باستخدام errors.New() من المكتبة القياسية:
import (
"errors"
"fmt"
)إرجاع خطأ من دالة:
func divide(a, b int) (int, 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)
}جرّب بنفسك
package main
import (
"errors"
"fmt"
)
func main() {
// اختبار باستخدام اسم مستخدم صالح
result, err := validateUsername("gopher123")
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println(result)
}
// اختبار باستخدام اسم مستخدم غير صالح
result, err = validateUsername("go")
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println(result)
}
}
func validateUsername(username string) (string, error) {
if len(username) < 5 {
// TODO: قم بإرجاع خطأ مع الرسالة "username must be at least 5 characters long"
// تلميح: استخدم errors.New() لإنشاء خطأ جديد
return "", nil // استبدل هذا السطر
}
return "Username is valid", nil
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4معاملات المقارنة والمعاملات المنطقية
معاملات المقارنة - الجزء 1معاملات المقارنة - الجزء 2معامل AND المنطقيمعامل OR المنطقيمعامل NOT المنطقيأساسيات أولوية المعاملاتملخص - إجراء المقارنات7تدفق التحكم: الحلقات التكرارية
شرح حلقة `for`حلقة `for` - أساسياتحلقة `for` - بشرط فقطالكلمة المفتاحية `break`الكلمة المفتاحية `continue`الحلقات المتداخلةملخص - تكرار العمليات2المتغيرات وأنواع البيانات الأساسية
ما هو المتغير؟استنتاج النوع باستخدام `:=`الأعداد الصحيحة (int)أرقام الفاصلة العائمةالقيم المنطقية (Booleans)النصوص (Strings)القيم الصفريةالثوابتقواعد التسميةملخص - المتغيرات والأنواع5الإدخال والإخراج الأساسي
المخرجات المنسقةرموز التنسيقطباعة الأنواعالحصول على مدخلات المستخدم الأساسيةملخص - الإدخال والإخراج8الدوال
فهم الدوالالتصريح عن دالةاستدعاء الدوالمعاملات الدالةإرجاع قيمة واحدةإرجاع قيم متعددةقيم الإرجاع المسماةأساسيات نطاق الدالةملخص - إنشاء كود قابل لإعادة الاستخدام11الأنواع المركبة: الشرائح
مقدمة إلى الشرائحالتصريح عن القيم المباشرة للشرائحإنشاء الشرائح باستخدام `make`طول الشريحة مقابل سعتهاالوصول إلى عناصر الشريحةإضافة العناصراقتطاع الشرائح/المصفوفات الموجودةالتكرار عبر الشرائحنسخ الشرائحملخص - القوائم الديناميكية14التعامل الأساسي مع الأخطاء
مفهوم الأخطاءواجهة الـ `error`الدوال التي تعيد أخطاءالتحقق من الأخطاءإنشاء أخطاء بسيطةإنشاء أخطاء منسقةالتعامل الأساسي مع الأخطاءملخص - معالجة المشكلات3المعاملات الأساسية
المعاملات الحسابيةمعامل القسمةمعامل باقي القسمةمعامل التعيينمعاملات التعيين المركبةالزيادة والنقصانملخص - الحسابات6تدفق التحكم: الجمل الشرطية
جملة `if`الكلمة المفتاحية `else`الكلمة المفتاحية `else if`تظليل المتغيرات في `if`تهيئة المتغيراتجملة `switch``switch` مع التعبيرات`switch` بدون تعبيرالكلمة المفتاحية `fallthrough`ملخص - اتخاذ القرارات