رحلة
تعلّم Go (Golang)
دورة Go مجانية وتفاعلية أونلاين. تكتب Go في كل درس — الـ syntax والـ structs والـ slices والـ interfaces والـ goroutines والـ channels — مع تلميحات بالذكاء الاصطناعي عندما تتعقّد أمور الـ concurrency، وشهادة مجانية عند الإكمال.
20,998+ من الـ codders مسجلون
- مناسب للمبتدئين
مساعدة برمجية بالذكاء الاصطناعي
دروس تفاعلية عملية
تعليق صوتي في كل درس
اختبارات لقياس معرفتك
شهادة إتمام مجانية
المنهج
قسم 1
Fundamentals
ابدأ القسمابدأتوسيعطيBuild a strong foundation with essential concepts and basic skillsمقدمة إلى Go
4 درسًا423- 01ما هي Go؟تحدي
- 02Hello Worldتحدياختبارصوت
- 03Printlnتحدياختبارصوت
- 04تعليقات Goتحدياختبارصوت
المتغيرات وأنواع البيانات الأساسية
10 درسًا1069- 01ما هو المتغير؟تحدياختبارصوت
- 02استنتاج النوع باستخدام `:=`تحدياختبارصوت
- 03الأعداد الصحيحة (int)تحدياختبارصوت
- 04أرقام الفاصلة العائمةتحدياختبارصوت
- 05القيم المنطقية (Booleans)تحدياختبارصوت
- 06النصوص (Strings)تحدياختبارصوت
- 07القيم الصفريةتحدياختبارصوت
- 08الثوابتتحدياختبارصوت
- 09قواعد التسميةتحدياختبارصوت
- 10ملخص - المتغيرات والأنواعتحدي
المعاملات الأساسية
7 درسًا744- 01المعاملات الحسابيةتحدياختبارصوت
- 02معامل القسمةتحدياختبارصوت
- 03معامل باقي القسمةتحدياختبارصوت
- 04معامل التعيينتحدياختبارصوت
- 05معاملات التعيين المركبةتحدياختبارصوت
- 06الزيادة والنقصانتحدياختبارصوت
- 07ملخص - الحساباتتحدي
معاملات المقارنة والمعاملات المنطقية
7 درسًا742- 01معاملات المقارنة - الجزء 1تحدياختبارصوت
- 02معاملات المقارنة - الجزء 2تحدياختبارصوت
- 03معامل AND المنطقيتحدياختبارصوت
- 04معامل OR المنطقيتحدياختبارصوت
- 05معامل NOT المنطقيتحدياختبارصوت
- 06أساسيات أولوية المعاملاتتحدياختبارصوت
- 07ملخص - إجراء المقارناتتحدي
الإدخال والإخراج الأساسي
5 درسًا532- 01المخرجات المنسقةتحدياختبارصوت
- 02رموز التنسيقتحدياختبارصوت
- 03طباعة الأنواعتحدياختبارصوت
- 04الحصول على مدخلات المستخدم الأساسيةتحدياختبارصوت
- 05ملخص - الإدخال والإخراجتحدي
تدفق التحكم: الجمل الشرطية
10 درسًا1069- 01جملة `if`تحدياختبارصوت
- 02الكلمة المفتاحية `else`تحدياختبارصوت
- 03الكلمة المفتاحية `else if`تحدياختبارصوت
- 04تظليل المتغيرات في `if`تحدياختبارصوت
- 05تهيئة المتغيراتتحدياختبارصوت
- 06جملة `switch`تحدياختبارصوت
- 07`switch` مع التعبيراتتحدياختبارصوت
- 08`switch` بدون تعبيرتحدياختبارصوت
- 09الكلمة المفتاحية `fallthrough`تحدياختبارصوت
- 10ملخص - اتخاذ القراراتتحدي
تدفق التحكم: الحلقات التكرارية
7 درسًا743- 01شرح حلقة `for`تحدياختبارصوت
- 02حلقة `for` - أساسياتتحدياختبارصوت
- 03حلقة `for` - بشرط فقطتحدياختبارصوت
- 04الكلمة المفتاحية `break`تحدياختبارصوت
- 05الكلمة المفتاحية `continue`تحدياختبارصوت
- 06الحلقات المتداخلةتحدياختبارصوت
- 07ملخص - تكرار العملياتتحدي
الدوال
9 درسًا962- 01فهم الدوالتحدياختبارصوت
- 02التصريح عن دالةتحدياختبارصوت
- 03استدعاء الدوالتحدياختبارصوت
- 04معاملات الدالةتحدياختبارصوت
- 05إرجاع قيمة واحدةتحدياختبارصوت
- 06إرجاع قيم متعددةتحدياختبارصوت
- 07قيم الإرجاع المسماةتحدياختبارصوت
- 08أساسيات نطاق الدالةتحدياختبارصوت
- 09ملخص - إنشاء كود قابل لإعادة الاستخدامتحدي
المؤشرات
7 درسًا644- 01ما هو المؤشر؟اختبارصوت
- 02التصريح عن متغيرات المؤشرتحدياختبارصوت
- 03معامل العنوان (Address-Of)تحدياختبارصوت
- 04إلغاء مرجعية المؤشرات (Dereferencing)تحدياختبارصوت
- 05استخدام المؤشرات في الدوالتحدياختبارصوت
- 06المؤشرات من النوع Nilتحدياختبارصوت
- 07ملخص - فهم المؤشراتتحدي
الأنواع المركبة: المصفوفات
7 درسًا650- 01مقدمة إلى المصفوفاتاختبارصوت
- 02التصريح عن المصفوفاتتحدياختبارصوت
- 03تهيئة المصفوفاتتحدياختبارصوت
- 04الوصول إلى عناصر المصفوفةتحدياختبارصوت
- 05طول المصفوفة باستخدام `len`تحدياختبارصوت
- 06التكرار عبر المصفوفاتتحدياختبارصوت
- 07المصفوفات متعددة الأبعادتحدياختبارصوت
الأنواع المركبة: الشرائح
10 درسًا965- 01مقدمة إلى الشرائحاختبارصوت
- 02التصريح عن القيم المباشرة للشرائحتحدياختبارصوت
- 03إنشاء الشرائح باستخدام `make`تحدياختبارصوت
- 04طول الشريحة مقابل سعتهاتحدياختبارصوت
- 05الوصول إلى عناصر الشريحةتحدياختبارصوت
- 06إضافة العناصرتحدياختبارصوت
- 07اقتطاع الشرائح/المصفوفات الموجودةتحدياختبارصوت
- 08التكرار عبر الشرائحتحدياختبارصوت
- 09نسخ الشرائحتحدياختبارصوت
- 10ملخص - القوائم الديناميكيةتحدي
الأنواع المركبة: الخرائط (Maps)
10 درسًا965- 01مقدمة إلى الخرائط (Maps)اختبارصوت
- 02التصريح عن الخرائط باستخدام Literalsتحدياختبارصوت
- 03إنشاء الخرائط باستخدام `make`تحدياختبارصوت
- 04إضافة وتحديث (مفتاح-قيمة)تحدياختبارصوت
- 05الوصول إلى قيم الخريطةتحدياختبارصوت
- 06التحقق من وجود المفتاحتحدياختبارصوت
- 07حذف مدخلات الخريطةتحدياختبارصوت
- 08طول الخريطةتحدياختبارصوت
- 09التكرار عبر الخرائطتحدياختبارصوت
- 10ملخص - تخزين (مفتاح-قيمة)تحدي
الأنواع المركبة: Structs
8 درسًا854- 01تعريف أنواع مخصصةتحدياختبارصوت
- 02إنشاء نماذج من الـ Structsتحدياختبارصوت
- 03الوصول إلى حقول الـ Structتحدياختبارصوت
- 04المؤشرات إلى الـ Structsتحدياختبارصوت
- 05تهيئة الـ Structsتحدياختبارصوت
- 06الـ Structs المضمنةتحدياختبارصوت
- 07الـ Structs المجهولةتحدياختبارصوت
- 08مراجعة - هياكل البيانات المخصصةتحدي
التعامل الأساسي مع الأخطاء
8 درسًا858- 01مفهوم الأخطاءتحدياختبارصوت
- 02واجهة الـ `error`تحدياختبارصوت
- 03الدوال التي تعيد أخطاءتحدياختبارصوت
- 04التحقق من الأخطاءتحدياختبارصوت
- 05إنشاء أخطاء بسيطةتحدياختبارصوت
- 06إنشاء أخطاء منسقةتحدياختبارصوت
- 07التعامل الأساسي مع الأخطاءتحدياختبارصوت
- 08ملخص - معالجة المشكلاتتحدي
قسم 2
Logic & Flow
ابدأ القسمابدأتوسيعطيMaster advanced Go programming with a focus on data structures and flow control. Learn to work with complex arrays, collections, error handling, and time management.تدفق التحكم المتقدم
5 درسًا528- 01جملة Switch مع `fallthrough`تحدياختبار
- 02الخروج من الحلقات المتداخلةتحدياختبار
- 03الاستمرار في حلقة محددةتحدياختبار
- 04جملة `goto`تحدياختبار
- 05ملخص - التحكم المتقدم في الحلقاتتحدي
الـ Structs والميثودز (Methods)
6 درسًا439- 01تعريف الـ Methods على الـ Structsتحدياختبار
- 02الـ Value Receiversتحدياختبار
- 03الـ Pointer Receiversتحدياختبار
- 04اختيار الـ Receiversاختبار
- 05الـ Methods مقابل الـ Functionsاختبار
- 06ملخص - سلوك الـ Structتحدي
الواجهات (الأساسيات)
8 درسًا757- 01ما هي الواجهة؟اختبار
- 02تعريف الواجهةتحدياختبار
- 03تطبيق الواجهةتحدياختبار
- 04استخدام أنواع الواجهاتتحدياختبار
- 05الواجهة الفارغةتحدياختبار
- 06تأكيدات النوع (Type Assertions)تحدياختبار
- 07تبديل النوع (Type Switch)تحدياختبار
- 08ملخص - الأشكال والسلوكياتتحدي
مشروع: قائمة مهام بسيطة
مشروع6 درسًا1- 01إعداد المشروعتحدي
- 02إضافة مهمةمشروع
- 03عرض جميع المهاممشروع
- 04إكمال مهمةمشروع
- 05حذف مهمةمشروع
- 06تجميع كل الأجزاءمشروع
تعمق في الـ Maps
5 درسًا432- 01Maps من نوع Structsتحدياختبار
- 02الـ Pointers كقيم في الـ Mapsتحدياختبار
- 03التحقق من الـ Nil Mapsتحدياختبار
- 04مقارنة الـ Mapsاختبار
- 05مراجعة - عداد تكرار الكلماتتحدي
أسلوب Go الاصطلاحي: المجموعات
7 درسًا648- 01أسلوب المجموعات في Goاختبار
- 02إنشاء مجموعةتحدياختبار
- 03الإضافة إلى مجموعةتحدياختبار
- 04التحقق من العضوية في المجموعةتحدياختبار
- 05الحذف من مجموعةتحدياختبار
- 06التكرار عبر عناصر المجموعةتحدياختبار
- 07مراجعة - أسماء مستخدمين فريدةتحدي
معالجة الأخطاء بعمق
7 درسًا650- 01أنواع الأخطاء المخصصةتحدياختبار
- 02تغليف الأخطاء باستخدام `%w`تحدياختبار
- 03فك التغليف باستخدام `errors.Is`تحدياختبار
- 04فك التغليف باستخدام `errors.As`تحدياختبار
- 05فهم `panic`اختبار
- 06استخدام `recover`تحدياختبار
- 07ملخص - القسمة الآمنةتحدي
مشروع: مخزون بسيط
مشروع6 درسًا1- 01نظرة عامة على المشروعتحدي
- 02التحقق من المخزونمشروع
- 03إضافة عنصر جديدمشروع
- 04تحديث كمية المخزونمشروع
- 05إنشاء تقريرمشروع
- 06تجميع كل الأجزاء معاًمشروع
الحزم والنطاق
7 درسًا550- 01ما هي الحزمة؟اختبار
- 02المصدرة مقابل غير المصدرةتحدياختبار
- 03إنشاء حزمة بسيطةتحدياختبار
- 04الأسماء المستعارة للحزمتحدياختبار
- 05المعرف الفارغ `_`اختبار
- 06دالة `init`تحدياختبار
- 07ملخص - بناء أداة مساعدةتحدي
التعامل مع الوقت
8 درسًا857- 01الحصول على الوقت الحاليتحدياختبار
- 02إنشاء وقت محددتحدياختبار
- 03تنسيق الوقتتحدياختبار
- 04تحليل النصوص الزمنيةتحدياختبار
- 05المدة الزمنيةتحدياختبار
- 06العمليات الحسابية على الوقتتحدياختبار
- 07الانتظار والـ Tickersتحدياختبار
- 08مراجعة - مؤقت بسيطتحدي
التحديات النهائية
3 درسًا3- 01قائمة جهات اتصال أساسيةتحدي
- 02مدقق أرقام بسيطتحدي
- 03جامع عناصر فريدةتحدي
قسم 3
Object Oriented Programming
ابدأ القسمابدأتوسيعطيDiscover how to organize code with classes, objects, and reusable structuresأساسيات الـ OOP في Go
11 درسًا1189- 01الملفات الخارجيةتحدياختبار
- 02مساحة العمل والـ Modules في Goتحدياختبار
- 03الـ Packages والـ Importsتحدياختبار
- 04الأسماء المصدرة مقابل غير المصدرةتحدياختبار
- 05مقدمة إلى الـ OOP في Goتحدياختبار
- 06الـ Structs كـ Classesتحدياختبار
- 07تعريف الـ Methods في الـ Structsتحدياختبار
- 08الـ Pointer Receivers مقابل الـ Value Receiversتحدياختبار
- 09تهيئة الـ Structتحدياختبار
- 10دوال الـ Constructorتحدياختبار
- 11مراجعة - آلة حاسبة بسيطةتحدي
تعمق في الأنواع و Structs
7 درسًا752- 01الأنواع الأساسية والمركبةتحدياختبار
- 02تعريفات الأنواع المخصصةتحدياختبار
- 03Struct Tagsتحدياختبار
- 04Structs مجهولةتحدياختبار
- 05Structs متداخلةتحدياختبار
- 06القيم الصفرية والافتراضيةتحدياختبار
- 07مراجعة - دفتر العناوينتحدي
المؤشرات والذاكرة
6 درسًا644- 01أساسيات المؤشرات في Goتحدياختبار
- 02المؤشرات إلى الـ Structsتحدياختبار
- 03التمرير بالقيمة مقابل التمرير بالمرجعتحدياختبار
- 04دالة ()newتحدياختبار
- 05Garbage Collection في Goتحدياختبار
- 06ملخص - بناء Linked Listتحدي
الواجهات
9 درسًا969- 01مقدمة في الواجهاتتحدياختبار
- 02التنفيذ الضمنيتحدياختبار
- 03الواجهة كعقدتحدياختبار
- 04الواجهة الفارغة (any)تحدياختبار
- 05تأكيد النوع (Type Assertion)تحدياختبار
- 06تبديل النوع (Type Switch)تحدياختبار
- 07تركيب الواجهاتتحدياختبار
- 08واجهات Stringer و Errorتحدياختبار
- 09مراجعة - حاسبة الأشكالتحدي
التركيب بدلاً من الوراثة
7 درسًا749- 01لماذا لا تدعم Go الوراثةتحدياختبار
- 02أساسيات تضمين الـ Structتحدياختبار
- 03ترقية الـ Methodتحدياختبار
- 04تضمين عدة Structsتحدياختبار
- 05التضمين مقابل التجميعتحدياختبار
- 06حجب الـ Methods المضمنةتحدياختبار
- 07ملخص - الهيكل الهرمي للموظفينتحدي
تعدد الأشكال في Go
6 درسًا643- 01تعدد الأشكال عبر Interfacesتحدياختبار
- 02Duck Typing في Goتحدياختبار
- 03قواعد استيفاء الـ Interfaceتحدياختبار
- 04مجموعات متعددة الأشكالتحدياختبار
- 05حقن التبعيةتحدياختبار
- 06مراجعة - معالج الدفعتحدي
التغليف
5 درسًا536- 01الحقول المصدرة وغير المصدرةتحدياختبار
- 02التغليف على مستوى الحزمةتحدياختبار
- 03دوال الـ Getter والـ Setterتحدياختبار
- 04إخفاء المعلومات في Goتحدياختبار
- 05ملخص - سجلات الطلابتحدي
معالجة الأخطاء و OOP
7 درسًا754- 01واجهة errorتحدياختبار
- 02أنواع الأخطاء المخصصةتحدياختبار
- 03تغليف الأخطاء (fmt.Errorf)تحدياختبار
- 04أخطاء Sentinelتحدياختبار
- 05errors.Is() و errors.As()تحدياختبار
- 06Panic و Defer و Recoverتحدياختبار
- 07ملخص - File Parserتحدي
التزامن والبرمجة كائنية التوجه (OOP)
8 درسًا863- 01أساسيات الـ Goroutinesتحدياختبار
- 02القنوات (Channels) والاتصالتحدياختبار
- 03القنوات المخزنة (Buffered) مقابل غير المخزنةتحدياختبار
- 04جملة Selectتحدياختبار
- 05sync.Mutex و sync.RWMutexتحدياختبار
- 06sync.WaitGroupتحدياختبار
- 07تصميم الـ Structs الآمنة للخيوط (Thread-Safe)تحدياختبار
- 08مراجعة - Worker Poolتحدي
الأنواع العامة (Go 1.18+)
6 درسًا645- 01مقدمة في الأنواع العامةتحدياختبار
- 02معاملات الأنواعتحدياختبار
- 03قيود الأنواعتحدياختبار
- 04الـ Structs العامةتحدياختبار
- 05حل بديل للـ Methods العامةتحدياختبار
- 06ملخص - المجموعات العامةتحدي
المكتبة القياسية والبرمجة كائنية التوجه (OOP)
6 درسًا644- 01io.Reader و io.Writerتحدياختبار
- 02واجهة sort.Interfaceتحدياختبار
- 03واجهة fmt.Stringerتحدياختبار
- 04encoding/json مع Structsتحدياختبار
- 05واجهة http.Handlerتحدياختبار
- 06مراجعة - نماذج REST APIتحدي
مفاهيم OOP المتقدمة
6 درسًا655- 01نمط Functional Optionsتحدياختبار
- 02نمط Builder في Goتحدياختبار
- 03تسلسل الدوال (Method Chaining)تحدياختبار
- 04الأسماء المستعارة للأنواع مقابل التعريفاتتحدياختبار
- 05أساسيات الـ Reflectionتحدياختبار
- 06نظرة عامة على Code Generationتحدياختبار
أنماط التصميم - الجزء الأول
6 درسًا651- 01مقدمة في أنماط التصميمتحدياختبار
- 02نمط Singletonتحدياختبار
- 03نمط Factoryتحدياختبار
- 04نمط Abstract Factoryتحدياختبار
- 05نمط Observerتحدياختبار
- 06نمط Strategyتحدياختبار
أنماط التصميم - الجزء الثاني
7 درسًا764- 01نمط الأمرتحدياختبار
- 02نمط المحولتحدياختبار
- 03نمط المزينتحدياختبار
- 04نمط طريقة القالبتحدياختبار
- 05نمط الحالةتحدياختبار
- 06نمط التركيبتحدياختبار
- 07Middleware كنمط مزينتحدياختبار
مشروع: إدارة المكتبة
مشروع7 درسًا1- 01نظرة عامة وهيكل المشروعتحدي
- 02هياكل Structs الكتاب والمستخدممشروع
- 03نظام الاستعارةمشروع
- 04البحث باستخدام Interfacesمشروع
- 05طبقة حفظ البيانات JSONمشروع
- 06واجهة CLI للمسؤولمشروع
- 07الاختبار والتكاملمشروع
التحديات النهائية
3 درسًا3- 01منصة تعليم إلكترونيتحدي
- 02نظام بنكيتحدي
- 03نظام شخصيات الألعابتحدي
لماذا تتعلم Go (Golang) مع Coddy
- اكتب كود Go حقيقياً وشغّله من متصفحك. لا حاجة لتثبيت Go toolchain ولا لإعداد GOPATH. كل درس يُجمِّع برنامجك على الخادم ويعرض لك الناتج فوراً.
- Go بأسلوبها الاصطلاحي: packages وstructs وslices وmaps وinterfaces ومعالجة الأخطاء وgoroutines وchannels. أنماط Go التي ستستخدمها فعلًا لبناء الـ backend وأدوات CLI.
- تلميحات الذكاء الاصطناعي تساعدك على تصحيح كود Go وتفكيك مشاكل goroutines والـ channels دون إفساد الحل، حتى يصبح نموذج التزامن واضحًا بدل أن يربكك.
- شهادة Golang مجانية عند إتمامك للدورة. مؤشر موثوق للوظائف في مجالات الـ backend والبنية التحتية السحابية وDevOps، حيث يزداد الطلب على إتقان Go.
أسئلة شائعة حول تعلّم Go (Golang)
هل Go (Golang) سهل التعلم؟
Go لغة بسيطة عمدًا مقارنة بمعظم اللغات الحديثة. مواصفات صغيرة، بلا وراثة، بلا تعقيدات generics افتراضية، ومكتبة قياسية قوية. معظم المبتدئين يصلون إلى أول برنامج Go يعمل خلال الساعة الأولى، ويبدؤون بكتابة goroutines خلال أسبوعين تقريبًا.
فيمَ يُستخدم Go (Golang)؟
خدمات الواجهة الخلفية، والبنية التحتية السحابية، وأدوات CLIs، وأدوات DevOps. فمشاريع Docker وKubernetes وTerraform، وجزء كبير من البنية التحتية السحابية الأصلية، مكتوبة بلغة Go. صُممت اللغة حول التجميع السريع، والتزامن السهل، وإنتاج ملف ثنائي ساكن واحد، وهو ما يجعلها خياراً طبيعياً للخوادم وأدوات سطر الأوامر.
كم من الوقت يستغرق تعلم Go؟
أساسيات Go — الـ syntax، الدوال، structs، slices، maps — تحتاج من أسبوع إلى أسبوعين من الممارسة اليومية. أما التعامل بمرونة مع interfaces وgoroutines وchannels فيستغرق عادةً من أسبوعين إلى ستة أسابيع إضافية. بعد ذلك، الوصول إلى مستوى الإنتاج في خدمات Go يعتمد في معظمه على العمل على قاعدة شيفرة حقيقية.
هل أتعلم Go أم Python؟
اختر بناءً على هدفك. Python يجعلك تشعر بالإنتاجية أسرع في تحليل البيانات وكتابة الـ scripts والذكاء الاصطناعي. أما Go فيتألق في خدمات الـ backend وأدوات البنية التحتية وأي شيء تحتاج فيه إلى binary سريع ومُحدَّد الأنواع statically-typed مع concurrency مدمج. الاثنان يكمّلان بعضهما بشكل جيد — وكثير من فرق الـ backend تستخدم كليهما.
هل يمكنني تعلّم Golang عبر الإنترنت مجاناً؟
نعم. دورة Go التفاعلية مجانية — دروس كاملة وتمارين برمجية واختبارات وشهادة. مُجمِّع Go يعمل على الخادم، فلست بحاجة إلى تثبيت Go محلياً أو إعداد GOPATH لتبدأ البرمجة.
هل أحصل على شهادة بعد إنهاء كورس Go؟
نعم. بإكمالك لدورة Go تحصل على شهادة إتمام مجانية يمكنك إضافتها إلى سيرتك الذاتية أو مشاركتها على LinkedIn. دليل قابل للتحقق إلى جانب أي مشاريع Go أو مستودعات GitHub أنجزتها.