Go
تعلّم Go من البداية إلى النهاية. ابدأ بالحزم والمتغيرات والتحكم في تدفق البرنامج، ثم تعمّق في الهياكل والواجهات والتزامن والاختبار وخوادم HTTP وقواعد البيانات والأنواع العامة وتحليل الأداء وإيصال الملفات التنفيذية الحقيقية إلى بيئة الإنتاج.
20 درسًا، بالترتيب
- 125 دقيقة
مرحبا، Go
أهلاً بك. إن لم تكتب كوداً في حياتك من قبل، فأنت في المكان الصحيح. Go لغة برمجة، أي طريقة لإعطاء الحاسوب تعليمات خطوة بخطوة بشيء يشبه الإنجليزية مع...
Package mainImportFunc mainFmt.PrintlnGo run - 225 دقيقة
المتغيرات والأنواع
في الدرس السابق طبعت نصًا ثابتًا. البرامج الحقيقية تحتاج إلى تذكّر أشياء تتغيّر: اسم عميل، أو سعر، أو ما إذا كان مربّع اختيار مؤشّرًا عليه. والمتغيّر...
Var declarationShort declaration :=IntFloat64StringBool+2 - 330 دقيقة
التحكم في التدفق: if و for
حتى الآن كل برنامج كتبته يعمل من أعلى إلى أسفل، سطراً بعد سطر، بلا خيارات في الطريق. لكن البرامج الحقيقية تحتاج أن تتفاعل: أن تحسب أجرة شحن مختلفة...
IfElse ifElseFor loopFor as whileInfinite for+2 - 430 دقيقة
الدوال
كل برنامج كتبته حتى الآن عاش داخل func main(). هذا يفي بالغرض في عشرة أسطر أو نحوها، لكن البرامج الحقيقية تحتاج أن تحسب الشيء نفسه في أكثر من موضع:...
Func keywordParametersReturn valuesMultiple return valuesNamed return valuesBlank identifier - 535 دقيقة
الشرائح (slices) والخرائط (maps)
كل متغيّر استعملته حتى الآن يحمل قيمة واحدة بالضبط: اسم واحد، عمر واحد، سعر واحد. لكن أغلب المسائل الحقيقية تتعلّق بمجموعة من الأشياء: قائمة طلاب، أو...
Slice literalAppendLenIndexingRangeMap literal+2 - 635 دقيقة
الهياكل (structs) والمؤشرات (pointers)
كل متغيّر كتبته حتى الآن في هذا المسار يحمل قيمة واحدة سائبة: عددًا واحدًا، أو نصًا واحدًا، أو شريحة واحدة. لكن البيانات الحقيقية نادرًا ما تأتي...
Struct definitionField accessZero values for structsPointer types& and * operatorsPointer receivers vs value receivers+1 - 735 دقيقة
الأساليب (methods) والواجهات (interfaces)
علّمك الدرس الماضي كيف تجمع الحقول المترابطة في بنية struct، لكن البنية وحدها لا تحمل إلا بيانات، ولا سلوك لها. فإن أردت أن يعرف Rectangle كيف يحسب...
Method declarationReceiver typesPointer vs value receiversInterface definitionImplicit interface satisfactionSmall interfaces+1 - 835 دقيقة
معالجة الأخطاء
كتبت if err != nil أكثر من مرة في هذا المساق دون أن تتوقف لتسأل ما err أصلًا ومن أين تأتي. الدوال تفشل طوال الوقت بطرق عادية متوقَّعة: ملف طلبه...
Error interfaceFmt.Errorf with %wErrors.IsErrors.AsCustom error typesPanic vs error+1 - 935 دقيقة
الوحدات (modules) وهيكل المشروع
كل برنامج كتبته في هذا المسار حتى الآن عاش في ملف واحد تستطيع تشغيله بأمر واحد. لكن مشاريع Go الحقيقية لا تبقى بهذا الصغر أبداً تقريباً: يتوزّع الكود...
Go mod initGo.mod and go.sumImport pathsPackage vs moduleInternal/ folderCmd/ layout+1 - 1040 دقيقة
مشروع CLI الصغير التتويجي
حتى الآن كانت مدخلات كل برنامج كتبته مثبتة داخل الشيفرة نفسها. إن أردت جمع أرقام أخرى، عدّلت الملف وشغّلته من جديد. هذا مقبول أثناء التعلّم وعديم...
Os.ArgsStrconv.AtoiError handling with if err != nilOs.ExitGo buildPutting it together - 1140 دقيقة
جولة في المكتبة القياسية
في تعلّم أي لغة تأتي لحظة تكفّ فيها عن التساؤل كيف تكتب حلقة وتبدأ بالتساؤل كيف تقرأ ملفاً، أو تنسّق تاريخاً، أو تحوّل بياناتك إلى شيء يفهمه برنامج...
FmtStringsStrconvTimeOsBufio+1 - 1240 دقيقة
الاختبار والمعايير المرجعية (benchmarks)
كتبت دالّة، وشغَّلت البرنامج، ورأيت الجواب الصحيح، ومضيت. وبعد أسبوع غيَّرت شيئًا مجاورًا فصارت الدالّة تُعيد نتيجة خاطئة للأعداد السالبة بلا ضجيج....
Go testTesting.TTable-driven testsT.Run subtestsTesting.B benchmarks_test.go file naming+1 - 1340 دقيقة
الغوروتينات (goroutines) والقنوات (channels)
برنامجك يحتاج أن ينزّل عشرين ملفاً. ومكتوباً بالطريقة العادية، ينزّل الأول ثم ينتظر، ثم ينزّل الثاني ثم ينتظر، وهكذا. وكل ذلك الوقت تقريباً يُقضى في...
The go keywordGoroutine lifetimeUnbuffered channelsBuffered channelsSend and receiveRange over channel+1 - 1445 دقيقة
أنماط التزامن
الـ goroutines والقنوات مواد خام، مثل الخشب والمسامير. أن تعرف ما هي لا يعني أنك تعرف كيف تصنع كرسيا. عمليا، شبه كل كود Go متزامن مركب من عدد قليل من...
Select statementContext.Context for cancellationSync.WaitGroupSync.MutexWorker pool patternFan-out fan-in idea - 1535 دقيقة
الأنواع العامة (generics)
تكتب دالة تجد أكبر رقم في شريحة من int. ثم تحتاج إلى واحدة تعمل على float64، فتنسخها وتغيّر كلمتين. ثم واحدة لـ string. صار عندك الآن ثلاث دوال شبه...
Type parameters with [T any]ConstraintsComparableTilde approximation ~intGeneric Map and FilterWhen generics help, when they do not - 1645 دقيقة
خوادم HTTP
في معظم اللغات تبدأ عبارة «اكتب خدمة ويب» باختيار إطار عمل، والاختيار مهم، لأن الإطار هو الذي يقرّر كيف يجري التوجيه، وكيف يبدو المعالج، وكيف تركّب...
Net/httpHttp.HandleFuncHttp.ServerJSON responsesRequest routingMiddleware via http.Handler wrapping+1 - 1745 دقيقة
قواعد البيانات مع database/sql
كل برنامج كتبته حتى الآن ينسى كل شيء لحظة خروجه. هذا مقبول في أداة تحوّل مدخلاتها ثم تتوقف، وعديم الفائدة في أي شيء له مستخدمون أو طلبات أو جلسات أو...
Database/sql packageDriver importsSql.Open and sql.DB poolExec vs Query vs QueryRowPrepared statementsScanning rows+1 - 1840 دقيقة
الأداء والتحليل التشخيصي
في لحظة ما يقول أحدهم إن الخدمة بطيئة، فتفتح الكود وترى فورا الحلقة التي لا بد أنها السبب. تعيد كتابتها، وتصير أذكى بكثير، وتبقى الخدمة بطيئة تماما...
Go test -benchPprof CPU and heap profilesEscape analysis with -gcflags=-mAvoiding unnecessary allocationsPreallocating slicesSync.Pool intuition - 1940 دقيقة
أنماط التصميم في لغة Go
تكبر البرامج. فالملف الذي كان مفهومًا تمامًا عند مئتَي سطر يصير مكانًا يكسر فيه تغيير صغير شيئًا في ملف ثالث بعيد، وتصير الاختبارات أبطأ وأصعب كتابةً...
Functional options patternRepository patternDependency injection via interfacesContext propagation through call stacksConstructor functions - 2045 دقيقة
النشر والإنتاج
بين برنامج يعمل على حاسبك المحمول وبرنامج تقبل أن تتركه شغّالًا وأنت نائم مسافة. وقطع هذه المسافة عمل غير براق وميكانيكي في معظمه، وهذا خبر سار:...
CGO_ENABLED=0 static binariesCross-compile with GOOS and GOARCHGraceful shutdown with http.Server and signal.NotifyContextMinimal Dockerfile with scratch or distrolessReading config from environment variables
تعلّم Go بلغتك
كل درس واختبار ورد من المدرس يظهر بلغتك. المدرس الذكي يرد بنفس اللغة التي تكتب بها.
Roles that use Go
See how hiring teams interview engineers on Go, in production-like environments.
Backend Engineer (Go, Rust, Java)
Hire backend engineers in real services with real databases, real concurrency and real latency budgets. Live or take-home, fully recorded.
See the interviewDistributed Systems Engineer
Hire distributed systems engineers in workspaces with real Kafka, real consensus and real partition tooling. Live or take-home, fully recorded.
See the interviewPlatform Engineer
Hire platform engineers who reduce friction for every team. Real golden-path templates, real internal CLIs, real service onboarding flows. We record every step.
See the interview