Go
Go را از ابتدا تا انتها یاد بگیرید. با پکیجها، متغیرها و جریان کنترل شروع کنید، سپس عمیقتر وارد ساختارها، اینترفیسها، همزمانی، تست، سرورهای HTTP، پایگاه داده، جنریکها، پروفایلینگ و انتشار باینریهای واقعی در محیط تولید شوید.
20 درس، به ترتیب
- 125 دقیقه
سلام، گو
خوش آمدید. اگر تا حالا هیچ کدی ننوشتهاید، درست همینجا جایتان است. 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)
درس قبل یاد گرفتید فیلدهای مرتبط را داخل یک استراکت جمع کنید، اما استراکت به تنهایی فقط داده نگه میدارد و هیچ رفتاری ندارد. اگر بخواهید 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 دقیقه
الگوهای همزمانی
گوروتینها و کانالها مصالح خاماند، مثل چوب و پیچ. اینکه بدانید چه هستند به شما نمیگوید چطور یک صندلی بسازید. در عمل، تقریبا هر کد همروندی در Go از...
Select statementContext.Context for cancellationSync.WaitGroupSync.MutexWorker pool patternFan-out fan-in idea - 1535 دقیقه
جنریکها (generics)
تابعی مینویسید که بزرگترین عدد یک اسلایس از int را پیدا کند. بعد به همان چیز برای float64 نیاز پیدا میکنید، پس کپیاش میکنید و دو کلمه را عوض...
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