گو

گو از صفر تا برنامه‌نویس

از اولین خط کد تا یک برنامه‌نویسِ واقعیِ Go — با تمرین‌های زنده‌ای که داورِ واقعی می‌سنجد.

۱۴۸درس
۱۱۴تمرین
۳۷ساعت
۹۴٪رضایت
مشاهده‌ی سرفصل‌ها
درباره‌ی دوره

چه چیزی یاد می‌گیری؟

گو از صفر تا برنامه‌نویس

این دوره تو را از اولین خط کد تا یک برنامه‌نویسِ واقعیِ Go می‌برد — با همان عمقِ دوره‌ی پرچم‌دارِ پایتونِ ما، اما با شخصیت و قواعدِ خودِ Go. هر مفهوم را گام‌به‌گام می‌سازیم و با تمرینِ زنده تثبیت می‌کنیم.

چه یاد می‌گیری؟

  • مبانی: package main، چاپ، خواندن از ورودی، مقدارِ صفر و تبدیلِ صریحِ تایپ‌ها
  • ثابت‌ها و iota و enum‌ها، و کنترلِ جریان با تنها حلقه‌ی for
  • توابع: چند مقدار بازگشتی، variadic، closure و defer
  • استراکت‌ها و متدها (receiverِ مقداری در برابر اشاره‌گری) و embedding
  • اینترفیس‌ها، اینترفیسِ خالی و type switch
  • آرایه‌ها، اسلایس‌ها و مپ‌ها با مرتب‌سازیِ کلیدها برای خروجیِ قطعی
  • رشته‌ها، rune، byte و strconv
  • خطاها به‌عنوان مقدار با errors.Is/As و fmt.Errorf %w، و panic/recover
  • هم‌روندیِ کاملاً قطعی با goroutine، channel، select و sync
  • کتابخانه‌ی استاندارد: strings، sort، bufio، bytes، math، unicode، regexp، json و time
  • دو ماژولِ پروژه‌ی واقعی: ابزارهای متن و داده، و ماشین‌حساب‌ها و مفسرها

برای چه کسی؟

برای هر کسی که می‌خواهد به یک برنامه‌نویسِ واقعیِ Go تبدیل شود. از صفر شروع می‌کنیم، پس به دانشِ قبلیِ Go نیازی نیست؛ کافی است حوصله‌ی تمرین و یادگیریِ گام‌به‌گام را داشته باشی.

چرا این دوره؟

هر تمرین یک برنامه‌ی کاملِ package main است که داورِ واقعیِ ورودی→خروجی آن را می‌سنجد؛ به همین دلیل قطعیّت (سورتِ کلیدهای مپ، فرمتِ صریحِ اعشار، هم‌روندیِ مرتب) از همان درسِ اول یک مهارتِ آموزش‌دیده است، نه تذکری حاشیه‌ای. چون نسخه‌ی اجرایی Go 1.16.2 است، جنریک‌ها و امکاناتِ نسخه‌های بعدی عمداً خارج از دامنه‌اند تا روی تسلطِ کامل بر خودِ زبان و الگوی idiomaticِ پیش از جنریک عمیق شویم.

۲۳ سرفصل ساخت‌یافته
۱۱۴ تمرین عملی
اجرا و بازخورد آنی در مرورگر
گواهی پایان دوره
ساخته‌ی تیم آموزشی دینا کد

این دوره را تیم آموزشی دینا کد طراحی کرده — با تمرکز بر «یادگیری با انجام‌دادن»: هر مفهوم با تمرین عملی و داوری خودکار که کدت را همان لحظه می‌سنجد، و سرفصل‌هایی که بر پایه‌ی مسیر واقعی یک برنامه‌نویس چیده شده‌اند.

سرفصل‌ها

سرفصل‌های دوره

۲۳ سرفصل · ۱۴۸ درس · ۱۱۴ تمرین

۱

اولین برنامه‌ها: package main، اجرا و چاپ

۶ درس
  • Go چطور اجرا می‌شود؟ مدلِ کامپایل‌سپس‌اجراپیش‌نمایش رایگان
  • سلام دنیاپیش‌نمایش رایگانتمرین
  • این کد آماده است: یک برنامه‌ی کامل را اجرا کنپیش‌نمایش رایگانتمرین
  • Print، Println و Printfپیش‌نمایش رایگانتمرین
  • چاپِ یک جدول کوچک با فاصله‌گذاری دقیقپیش‌نمایش رایگانتمرین
  • جمع‌بندی: قرارداد ورودی→خروجی و چرا خروجی دقیق مهم استپیش‌نمایش رایگان
۲

متغیرها، مقدار صفر و خواندن از ورودی

۷ درس
  • مقدار صفر (zero value): در Go هیچ‌چیز تعریف‌نشده نیستپیش‌نمایش رایگان
  • اعلانِ متغیرها و چاپِ مقدارهای صفرپیش‌نمایش رایگانتمرین
  • خواندن از stdin: fmt.Scan و bufio.Scannerپیش‌نمایش رایگان
  • اکو: آنچه را می‌خوانی برگردانپیش‌نمایش رایگانتمرین
  • جمعِ دو عدد از ورودیپیش‌نمایش رایگانتمرین
  • این کد آماده است: خواندن N سپس N عددپیش‌نمایش رایگانتمرین
  • تبدیل: عددِ خوانده‌شده را دو برابر کنتمرین
۳

اعداد، تایپ‌های پایه و فرمتِ قطعیِ اعشار

۷ درس
  • تایپ‌های عددی و چرا تبدیل همیشه صریح است
  • خارج‌قسمت و باقیماندهتمرین
  • قطعیّت اعشار: همیشه با ‎%.Nf‎ چاپ کن
  • مساحت دایره با دقت ثابتتمرین
  • تبدیل صریح تایپ و تقسیمِ واقعیتمرین
  • ریشه و توان با mathتمرین
  • تبدیل دما و سرریزِ تایپ‌های کوچکتمرین
۴

ثابت‌ها، iota و enum‌ها

۶ درس
  • ثابت‌ها و الگوی enum با iota
  • نامِ روزِ هفته از شمارهتمرین
  • بیت‌فلگ‌ها با 1<<iotaتمرین
  • این کد آماده است: enum با متدِ String()تمرین
  • ثابت‌های دما و تبدیلتمرین
  • اندازه‌ی فایل با ثابت‌های توان دوتمرین
۵

کنترل جریان: if، switch و تنها حلقه‌ی for

۷ درس
  • for تنها حلقه است؛ if و switch به سبکِ Go
  • این کد آماده است: ردِ یک حلقه را بزنتمرین
  • نمره‌ی حرفی با if/elseتمرین
  • FizzBuzz تا Nتمرین
  • دسته‌بندی با switch بدونِ عبارتتمرین
  • break برچسب‌دار در حلقه‌ی تو در توتمرین
  • جمع‌بندی: انتخابِ درستِ ساختارِ کنترلی
۶

توابع I: تعریف، چند مقدار بازگشتی و «تست از داخلِ main»

۶ درس
  • توابع، چند مقدار بازگشتی و الگوی تست‌از-main
  • تابعِ max از دو عددتمرین
  • کمینه و بیشینه با هم (چند مقدار بازگشتی)تمرین
  • این کد آماده است: یک تابع از چند ورودیِ مختلفتمرین
  • تابعِ خارج‌قسمت با علامتِ خطاتمرین
  • مقدارهای بازگشتیِ نام‌دار و return لختتمرین
۷

آرایه‌ها، اسلایس‌ها و رشدِ آن‌ها

۷ درس
  • آرایه در برابر اسلایس: header، len و cap
  • جمع و میانگینِ N عددتمرین
  • بیشینه و کمینه‌ی یک اسلایستمرین
  • وارونه کردنِ اسلایس در جاتمرین
  • append و حذفِ یک عنصرتمرین
  • جدولِ دو-بعدی: جمعِ سطرهاتمرین
  • این کد آماده است: cap، رشد و aliasingتمرین
۸

مپ‌ها و قطعیّت: همیشه کلیدها را سورت کن

۶ درس
  • مپ‌ها و قانونِ طلایی: ترتیبِ پیمایش تصادفی است
  • این کد آماده است: چاپِ قطعیِ یک مپتمرین
  • شمارشِ بسامدِ کلمه‌هاتمرین
  • وجود کلید با comma-okتمرین
  • مپ به‌عنوان set: عناصرِ یکتاتمرین
  • جمع‌بندی: چک‌لیستِ قطعیّت (نسخه‌ی اول)
۹

توابع II: variadic، closure، recursion و defer

۶ درس
  • closure، گرفتنِ متغیر و باگِ زنده‌ی حلقه در ۱.۱۶
  • تابعِ variadic: جمعِ هر تعداد عددتمرین
  • شمارنده با closureتمرین
  • فاکتوریل و فیبوناچی (بازگشت)تمرین
  • ترتیبِ اجرای defer (LIFO)تمرین
  • این کد آماده است: closure برای map/filter دستیتمرین
۱۰

اشاره‌گرها، new و سمانتیکِ مقدار/ارجاع

۶ درس
  • اشاره‌گرها در Go: & و *، بدونِ حسابِ اشاره‌گری
  • دو برابر کردن از طریقِ اشاره‌گرتمرین
  • تضادِ مقداری در برابر اشاره‌گریتمرین
  • جابه‌جاییِ دو مقدار با اشاره‌گرتمرین
  • این کد آماده است: new در برابر makeتمرین
  • ایست‌بازرسیِ فاز یک + پروژه‌ی کوچکِ مرور
۱۱

استراکت‌ها: مدل‌سازیِ داده

۶ درس
  • استراکت‌ها، literal‌ها و embedding
  • ساختنِ یک استراکتِ نقطه و چاپشتمرین
  • سازنده‌ی New و مقدارِ پیش‌فرضتمرین
  • استراکتِ تو در تو و دسترسی به فیلدتمرین
  • embedding: ترکیب به‌جای وراثتتمرین
  • این کد آماده است: ساختِ یک مدلِ دامنهتمرین
۱۲

متدها: رفتار به‌تایپ‌ها

۶ درس
  • متد چیست؟ receiverِ مقداری در برابر اشاره‌گری
  • این کد آماده است: تضادِ دو نوع receiverتمرین
  • مستطیل: Area (مقداری) و Scale (اشاره‌گری)تمرین
  • متد روی تایپِ غیراستراکتتمرین
  • حسابِ بانکی با متدِ اشاره‌گریتمرین
  • جمع‌بندی: method set و انتخابِ receiver
۱۳

اینترفیس‌ها، اینترفیسِ خالی و type switch

۷ درس
  • اینترفیس‌ها به‌صورت ضمنی ارضا می‌شوند
  • اینترفیسِ Shape با چند پیاده‌سازیتمرین
  • type switch روی اینترفیسِ خالیتمرین
  • type assertion با comma-okتمرین
  • Stringer سفارشی برای چاپِ خواناتمرین
  • مرتب‌سازیِ اسلایسِ Shape با sort.Interfaceتمرین
  • جمع‌بندی: اینترفیس‌هایی که در stdlib می‌بینی
۱۴

خطاها به‌عنوان مقدار: Is، As و wrapping

۶ درس
  • error یک مقدار است، نه یک exception
  • تقسیمِ امن با خطاتمرین
  • خطای sentinel و مقایسهتمرین
  • تایپِ خطای سفارشیتمرین
  • wrapping با %w و errors.Isتمرین
  • errors.As برای استخراجِ تایپتمرین
۱۵

panic، recover و مرزهای خطا

۶ درس
  • panic و recover: فقط برای موارد واقعاً استثنایی
  • این کد آماده است: recover یک panic را به error تبدیل می‌کندتمرین
  • تقسیمِ امن با recoverتمرین
  • دسترسیِ امن به اندیسِ اسلایستمرین
  • اعتبارسنجیِ ورودی با panic داخلی و recover بیرونیتمرین
  • ترتیبِ پاک‌سازیِ defer در حضورِ panicتمرین
۱۶

رشته‌ها، rune، byte و strconv

۶ درس
  • رشته‌ها UTF-8 هستند: byte در برابر rune
  • شمارشِ بایت در برابر شمارشِ runeتمرین
  • وارونه‌سازیِ رشته بر اساسِ runeتمرین
  • شمارشِ مصوت‌ها و بزرگ‌سازیتمرین
  • ساخت رشته با strings.Builderتمرین
  • تجزیه و فرمتِ عدد با strconvتمرین
۱۷

تسلط بر fmt، sort و bufio

۷ درس
  • فعل‌های fmt و خواندنِ stdin با bufio
  • اعشار با دقت‌های مختلفتمرین
  • خواندنِ توکن‌به‌توکن با ScanWordsتمرین
  • تراز و عرضِ ثابت در جدولتمرین
  • مرتب‌سازیِ اعداد و رشته‌هاتمرین
  • مرتب‌سازیِ سفارشی با sort.Slice (دو-کلیدی)تمرین
  • جست‌وجوی دودویی با sort.Searchتمرین
۱۸

هم‌روندیِ قطعی: goroutine، WaitGroup و channel

۶ درس
  • هم‌روندی + انضباطِ قطعیّت: هرگز از goroutine‌های رقیب چاپ نکن
  • این کد آماده است: fan-out قطعیِ درستتمرین
  • مربعِ موازی، نتیجه‌ی مرتبتمرین
  • جمعِ موازی با اسلایسِ نتایجتمرین
  • اشتباهاتِ رایجِ race (نشان‌داده، سپس اصلاح‌شده)
  • نگاشتِ موازیِ یک تابع روی اسلایستمرین
۱۹

channel، select، Mutex و sync

۶ درس
  • channel‌ها: ارتباط به‌سبکِ CSP
  • تولیدکننده/مصرف‌کننده با channel و closeتمرین
  • worker pool با نتایجِ مرتبتمرین
  • این کد آماده است: شمارنده‌ی مشترکِ امن با Mutexتمرین
  • select روی چند کانالِ کنترل‌شدهتمرین
  • sync.Once برای مقداردهیِ یک‌بارهتمرین
۲۰

کتابخانه‌ی استاندارد: math، time (ثابت)، bytes، regexp و json

۷ درس
  • stdlibِ امن: math، time با مقدارِ ثابت، bytes و regexp
  • گردکردن و توان با mathتمرین
  • تاریخِ ثابت: روزِ هفته و +۳۰ روزتمرین
  • regexp: استخراجِ همه‌ی اعدادتمرین
  • regexp: پوشاندنِ ارقامتمرین
  • json: unmarshal یک خط و چاپِ فیلدتمرین
  • json: ساختِ استراکت از stdin و Marshalتمرین
۲۱

تست، idiom‌ها و سازماندهیِ کد

۶ درس
  • تستِ table-driven به‌عنوان مفهوم
  • Go idiomatic: نام‌گذاری، early-return و سازماندهی
  • یک تابع، چند ورودی (سبکِ table)تمرین
  • getter بدونِ پیشوندِ Getتمرین
  • این کد آماده است: کدِ idiomatic در برابر غیرidiomaticتمرین
  • بازآراییِ کدِ تو در تو با early-returnتمرین
۲۲

پروژه‌های واقعی: ابزارهای متن و داده

۷ درس
  • معرفیِ کپ‌استون: از ابزارهای کوچک تا ابزارِ واقعی
  • اعتبارسنجِ پرانتزهاتمرین
  • کدگذار/کدگشای RLEتمرین
  • مبدلِ عددِ رومی (دوطرفه)تمرین
  • تحلیلگرِ بسامدِ کلمه (رتبه‌بندی‌شده)تمرین
  • گزارشِ فروش از CSV (متنی)تمرین
  • تحلیلگر و خلاصه‌سازِ لاگتمرین
۲۳

پروژه‌های واقعی: ماشین‌حساب‌ها، مفسرها و ماشین‌های حالت

۸ درس
  • معرفیِ کپ‌استونِ دوم: ساختنِ چیزهای زبان‌شکل
  • ماشین‌حسابِ RPN (پسوندی)تمرین
  • اعتبارسنجِ پیکربندیِ JSONتمرین
  • مبدلِ واحد (طول، جرم، دما)تمرین
  • ماشینِ حالتِ متناهی (چرخِ ورودی)تمرین
  • ارزیابِ عبارتِ میان‌وندی (با تقدم و پرانتز)تمرین
  • مفسرِ کوچکِ بایت‌کدِ پشته‌ایتمرین
  • جمع‌بندیِ کلِ دوره و چک‌لیستِ نهاییِ قطعیّت

همین حالا شروع کن

اولین خط کدت را همین امروز در «گو از صفر تا برنامه‌نویس» بنویس. شروع رایگان است و در کمتر از دو دقیقه وارد محیط یادگیری می‌شوی.

گو از صفر تا برنامه‌نویس — دینا کد