دورة تفاعلية
الذهاب بالطبع
تعلم "البدء من الصفر" باللغة الإنجليزية. تمارين ذات التحقق الثابت والروابط المباشرة إلى Go Playground الرسمية لتشغيل التعليمات البرمجية الخاصة بك على المترجم الحقيقي.
التحقق الثابت عبر الكلمات الرئيسية + التنفيذ على المسؤولGo Playground(نقرة واحدة لنسخ الكود + فتح).
01 · الوحدة 1 – أساسيات اللغة
الأسس: الحزم، والمتغيرات، والأنواع، والثوابت، والمشغلين، والمدخلات/المخرجات مع حزمة FMT.
- 1.1المتغيرات والأنواعvar، والإعلان القصير `:=`، والأنواع الأساسية (int، float64، string، bool)، ومفهوم الكتابة الثابتة.~10 min
- 1.2تحويلات القيمة والنوع صفركل متغير له قيمة افتراضية؛ التحويلات صريحة (`int(x)`، `string(b)`).~10 min
- 1.3الثوابت والذرة"const"، والثوابت غير المكتوبة، ونمط "iota" لإنشاء تعدادات قابلة للقراءة.~10 min
- 1.4مشغليالحساب والمقارنة والمنطقية والبت؛ الأسبقية والاختلاف عن اللغات الأخرى.~8 min
- 1.5الإدخال / الإخراج مع FMT`fmt.Println`، `fmt.Printf`، تنسيق الأفعال (`%d`، `%s`، `%v`، `%T`) ومتى يتم تفضيل أحدهما على الآخر.~10 min
02 · الوحدة 2 - التحكم في التدفق
القرارات والتكرارات: إذا كانت باستخدام عبارات init، والمفتاح المفرد "for"، والمفتاح الاصطلاحي، ومعالجة الأخطاء الصريحة.
- 2.1إذا، وإلا، وبيانات init`if v := f(); v > 0 { ... }` النموذج ولماذا لا يحتوي Go على عامل تشغيل ثلاثي.~10 min
- 2.2ل: الحلقة الوحيدةوأشكال "ل" الثلاثة: عبارة ثلاثية، وشرط مفرد (= بينما)، ولا نهاية؛ باستخدام "استراحة" و"متابعة".~10 min
- 2.3ل... المدىالتكرار عبر الشرائح والخرائط والسلاسل؛ القيمة التي تم إرجاعها هي نسخة، عند تجاهل الفهرس أو القيمة التي تحتوي على `_`.~10 min
- 2.4التبديل الاصطلاحيلا يوجد خطأ ضمني، تعبيرات معقدة في الحالات، يتم التبديل بدون شرط كسلسلة من if.~10 min
- 2.5الأخطاء: النمط `if err != nil`الأخطاء هي القيم؛ النمط الأساسي `if err != nil { return err }` ولماذا ليس لدى Go أي استثناءات.~12 min
03 · الوحدة 3 – الوظائف
يعمل كمواطنين من الدرجة الأولى: التوقيعات، والإرجاعات المتعددة، والمعلمات المتنوعة، والإغلاقات، و"التأجيل".
- 3.1التوقيع والمعلماتبناء جملة `func name(p type) type`، قيمة التمرير بشكل افتراضي، المعلمات من نفس النوع مجمعة معًا.~10 min
- 3.2عوائد متعددة وعوائد مسماةإرجاع قيم متعددة (`قيمة، خطأ`)، وإرجاع النمط المسمى، ومتى لا يجب استخدامه.~12 min
- 3.3وظائف فاراديك`func sum(nums ...int) int`، نشر شريحة باستخدام ``شريحة...''، أمثلة من stdlib.~10 min
- 3.4عمليات الإغلاق والوظائف كقيموظائف مجهولة تلتقط المتغيرات من السياق المحيط؛ محول وأنماط المصنع.~12 min
- 3.5"تأجيل": تنظيف مضمونتأجيل التنفيذ لحين العودة؛ نمط `تأجيل f.Close()`، ترتيب LIFO، الأخطاء داخل الحلقات.~12 min
04 · الوحدة 4 – المجموعات
المصفوفات، والشرائح (البنية الأكثر أهمية)، والخرائط، والرونية داخل السلاسل، والفرز.
- 4.1صفائف ذات طول ثابتبناء جملة `[N]T`، لماذا نادرًا ما يتم استخدام المصفوفات الحقيقية في Go، والتحويل من مصفوفة إلى شريحة.~8 min
- 4.2الشرائح: البنية الاصطلاحية`make`، `append`، len/cap، تقطيع `s[a:b]`، مشاركة المصفوفة الأساسية، ومتى يتم النسخ.~15 min
- 4.3الخرائط: المفاتيح والقيمالإعلان، الوصول بفاصلة موافق (`v، ok := m[k]`)، `حذف`، التكرار غير الحتمي.~12 min
- 4.4السلاسل والبايتات والرونيةالسلاسل هي بايت UTF-8؛ `النطاق` ينتج عنه الأحرف الرونية؛ `len()` تحسب البايتات وليس الأحرف.~12 min
- 4.5الفرز باستخدام حزمة الفرز`sort.Ints`، `sort.Strings`، `sort.Slice` مع وظيفة المقارنة والاستقرار.~10 min
05 · الوحدة 5 - الهياكل والأساليب
أنواع البيانات المركبة: البنيات، والأساليب المتعلقة بمستقبلات القيمة أو المؤشر، والتكوين (بدون وراثة)، والعلامات.
- 5.1تعريف واستخدام البنية`اكتب بنية الشخص { سلسلة الاسم؛ Age int }`، التهيئة الموضعية مقابل التهيئة المسماة، بنيات مجهولة.~12 min
- 5.2الطرق: القيمة مقابل مستقبل المؤشر`func (p Person) Hello()` vs `func (p *Person) Rename(n string)`; متى تستخدم واحدة أو أخرى.~14 min
- 5.3التكوين (التضمين)Go ليس له أي وراثة: فأنت تقوم بالتأليف عن طريق دمج نوع واحد داخل نوع آخر. الترويج للطريقة.~12 min
- 5.4العلامات الميدانية وJSON`json:"name,omitempty"`، التنظيم/إلغاء التنظيم باستخدام `encoding/json`، أخطاء شائعة.~12 min
- 5.5نمط المنشئ `الجديد...`لا تحتوي لغة Go على مُنشئات: الاصطلاح هو دالة `NewT(...) *T` التي تتحقق من صحة الأخطاء وترجعها.~10 min
06 · الوحدة 6 – الواجهات
الواجهات الهيكلية (لا توجد أدوات صريحة)، والتأكيدات، ومفاتيح الكتابة، وواجهات "Stringer" و"error" القياسية.
- 6.1واجهات: تحديد السلوكالواجهة عبارة عن مجموعة من الأساليب؛ من ينفذها يرضيها تلقائيًا (كتابة البطة الثابتة).~12 min
- 6.2نوع التأكيد`v, ok := i.(*MyT)`، صيغة الفاصلة-ok لتجنب الذعر، عندما تفضل التأكيد على مفتاح الكتابة.~10 min
- 6.3اكتب التبديل`switch v := x.(type) { case int: ... }` للإرسال حسب نوع وقت التشغيل.~10 min
- 6.4واجهة سترينجريؤدي تنفيذ سلسلة String() إلى تغيير كيفية تمثيل `fmt.Println` لنوعك.~10 min
- 6.5واجهة الخطأ`الخطأ` هو مجرد `سلسلة خطأ()`؛ إنشاء أخطاء مخصصة، `errors.Is`، `errors.As`، `fmt.Errorf("%w"، err)`.~14 min
07 · الوحدة 7 - التزامن
نموذج التزامن الخاص بـ Go: إجراءات خفيفة الوزن، وقنوات للاتصال، و"التحديد"، والمزامنة، والسياق.
- 7.1Goroutines: التوازي خفيف الوزن`go f()`، تكلفة goroutine، لماذا يخرج الرئيسي دون انتظار، وكيفية المزامنة.~12 min
- 7.2القنوات: الاتصال المكتوب`ch := make(chan int)`, `ch <- v`, `v := <-ch`, القنوات المخزنة مقابل القنوات غير المخزنة، الإغلاق.~15 min
- 7.3`تحديد`: تعدد القنواتانتظر حتى القناة الأولى الجاهزة، الحالة "الافتراضية" لتجنب الحظر، ونمط المهلة مع "time.After".~12 min
- 7.4"sync.Mutex" و"sync.WaitGroup".عندما لا تكون القنوات كافية: قم بحماية الحالة المشتركة باستخدام Mutex، وانتظر goroutines N باستخدام WaitGroup.~14 min
- 7.5`السياق.السياق`: الإلغاء والمواعيد النهائيةنشر الإلغاء عبر goroutines، `context.WithTimeout`، `ctx.Done()`، نمط المعلمة الأولى.~14 min
08 · الوحدة 8 - المكتبة القياسية الأساسية
الحزم التي ستستخدمها كل يوم: fmt، strings، strconv، io، os، time، encoding/json.
- 8.1المتقدمة "FMT".`Sprintf` و`Fprintf` والأفعال `%+v` و`%#v` وتنسيق العرض والدقة والعلامتين `-` و`0`.~10 min
- 8.2"السلاسل" و"strconv".`strings.Contains/Split/Join/TrimSpace`، `strconv.Itoa/Atoi/ParseInt/FormatFloat`.~12 min
- 8.3`io` و`os`: الملفات والتدفقات`os.Open/Create/ReadFile/WriteFile`، واجهات `io.Reader/Writer`، نمط `defer f.Close()`.~14 min
- 8.4حزمة "الوقت".`time.Now()`، والمدد، والتحليل باستخدام التخطيط المرجعي `2006-01-02 15:04:05`، والمؤقتات والمؤشرات.~12 min
- 8.5"الترميز/json".`json.Marshal/Unmarshal`، علامات البنية، `json.Decoder/Encoder` للتدفقات، تحليل الأخطاء.~14 min
09 · الوحدة 9 - الاختبارات والوحدات والأدوات
أداة "go test"، والاختبارات المستندة إلى الجدول، والمعايير المرجعية، وإدارة التبعية باستخدام "go mod"، وعلامات البناء.
- 9.1حزمة "الاختبار".ملفات `*_test.go`، ووظائف `TestXxx(t *testing.T)`، و`t.Error` مقابل `t.Fatal`، و`go test ./...`.~12 min
- 9.2الاختبارات المعتمدة على الجدولالنمط الاصطلاحي: شريحة من الهياكل المجهولة ذات المدخلات والمخرجات المتوقعة، `t.Run(name, ...)` للاختبارات الفرعية.~14 min
- 9.3المعايير والملفات الشخصيةوظائف `BenchmarkXxx(b *testing.B)`، `for i := 0; أنا < ب. ن؛ i++` حلقة،`اذهب للاختبار -bench=.`.~12 min
- 9.4الذهاب وحدات`go mod init`، `go get`، إصدار الاستيراد الدلالي، ملف القفل `go.sum`، `go mod tidy`.~12 min
- 9.5بناء القيود والعلاماتالتوجيه `//go:build...` للإنشاءات عبر الأنظمة الأساسية، وفصل كود الاختبار/التكامل، وأمثلة من العالم الحقيقي.~10 min
10 · الوحدة 10 - الممارسة الاصطلاحية
التسمية، ومعالجة الأخطاء المتقدمة، والأدوية العامة (Go 1.18+)، ومشروعان صغيران: CLI وخادم HTTP.
- 10.1اصطلاحات التسمية والأسلوبPascalCase للصادرات، CamelCase للسكان المحليين، الأسماء القصيرة في النطاقات القصيرة، `gofmt` غير قابلة للتفاوض.~10 min
- 10.2معالجة الأخطاء الاصطلاحيةأخطاء الحارس (`io.EOF`)، والأخطاء المخصصة في `Unwrap`، والالتفاف بـ `%w`، ومتى يتم استخدام `الذعر`.~14 min
- 10.3الأدوية العامة (الإصدار 1.18+)اكتب المعلمات `func Map[T, U Any](s []T, f func(T) U) []U`، القيود (`قابلة للمقارنة`، مخصصة)، المفاضلات.~15 min
- 10.4مشروع صغير: CLI مع الأعلامحزمة "العلم" والأوامر والأوامر الفرعية ورموز الخروج و"السجل" مقابل "fmt" للإخراج.~18 min
- 10.5مشروع صغير: خادم HTTP`net/http`، الحد الأدنى من المعالج وجهاز التوجيه، والبرمجيات الوسيطة كمصممين، وإيقاف التشغيل بسلاسة مع السياق.~18 min