TGViewer
کداکسپلور | CodeExplore کداکسپلور | CodeExplore @codeexplore · 9.2K subscribers
Post #4016 1.63K
🧵 ساختار پروژه تو Go — نظم بدون دردسر 😎

وقتی یه پروژه کوچیک Go می‌نویسی، همه‌چی تو یه فایل جا می‌شه و دنیا قشنگه.
ولی وقتی یه‌کم رشد می‌کنه و چند تا پکیج و سرویس می‌چسبونیش بهش، کم‌کم حس می‌کنی داری تو آمازون گم می‌شی!

اینجاست که یه ساختار تمیز می‌تونه نجاتت بده.
گو می‌گه: «نه کلاس، نه فریم‌ورک سنگین — فقط یه ساختار ساده ولی اصولی!»

🏗 ساختار پیشنهادی برای یه پروژه‌ی واقعی Go:
myapp/
├── cmd/ → نقطه‌ی ورود اپلیکیشن
├── internal/ → منطق داخلی، مخصوص خود پروژه
├── pkg/ → پکیج‌های قابل استفاده عمومی
├── api/ → تعریف API (مثلاً protobuf یا Swagger)
├── configs/ → فایل‌های پیکربندی
├── scripts/ → ابزارهای dev و deploy
├── test/ → تست‌های integration
├── go.mod
└── README.md

🚀مسیر ‌cmd/ — نقطه‌ی شروع ماجرا

اینجا فایل‌های main.go می‌ره.
ممکنه چند تا اپلیکیشن داشته باشی (مثلاً یه سرور و یه worker):
cmd/
├── server/
│ └── main.go
├── worker/
│ └── main.go

📌 تو این پوشه فقط باید فایل‌هایی باشن که برنامه رو راه می‌ندازن، نه منطق اصلی.
🧠مسیر ‌internal/ — جعبه‌ابزار محرمانه

گو یه قابلیت جالب داره: هر چی توی internal/ باشه، فقط از داخل خود پروژه قابل import کردنه.
یعنی مثل اینه که روش قفل زدی 🔒

اینجا معمولاً چیزهایی مثل:

logic اصلی برنامه

لایه‌ی دسترسی به دیتابیس

implementation سرویس‌ها

قرار می‌گیرن.

📦مسیر ‌pkg/ — ابزارهای قابل استفاده بیرونی

اگه یه بخش از کدت خیلی جنرال و قابل reuse‌ه، می‌تونی بندازیش تو pkg/.
مثلاً یه logger، یه پکیج محاسباتی، یا ابزار auth.

pkg/
└── logger/
└── logger.go

🛰مسیر ‌api/ — قراردادهای ارتباطی

این پوشه جای تعریف APIهاست. مثلاً:

فایل‌های .proto برای gRPC

تعریف‌های OpenAPI یا Swagger

JSON schema

⚙️ ‌مسیر configs/ — تنظیمات محیط

هر محیط یه سری تنظیم داره. dev، staging، production.
این فایل‌ها می‌تونن yaml، json یا env باشن.

🛠مسیر ‌scripts/ — ابزارهای پشت‌پرده

هر کاری که می‌خوای اتومات یا دستی انجام بدی، مثل:

✅ اجرای migration

✅بیلد(build) کردن

✅ اجرای تست‌ها

✅پاک سازی (cleanup)


🧪مسیر ‌test/ — تست‌های جدی‌تر

واسه integration یا end-to-end testهایی که بزرگ‌تر از unit test معمولین، این پوشه خیلی به‌درد می‌خوره.

📌 تو Go معمولا unit testها کنار خود کدها هستن (something_test.go)
ولی تست‌های سیستمی رو بهتره اینجا نگه‌داری.

🧼 چند نکته‌ی طلایی

✅ ساختار پروژه هم باید همین‌طور باشه: شفاف، بدون پیچیدگی الکی.

✅ از همون اول نیازی نیست همه‌ی پوشه‌ها رو بسازی. ساختار با رشد پروژه شکل می‌گیره.

✅ چیزی که قرار نیست بیرون استفاده بشه، بندازش تو internal/ و راحت بخواب!

✅ هر چی ماژولارتر، بهتر: تفکیک مسئولیت باعث می‌شه تیم راحت‌تر توسعه بده، تست کنه، و تغییر بده.

حالا یه ابزار میخوام بهت معرفی کنم که این کارو برات اتوماتیک انجام میده.
https://github.com/Melkeydev/go-blueprint

#golang #project #structure
☕️Telegram | Website | Discord
  • 🔥 12
  • ⚡ 2
More from @codeexplore
  1. Oct 8, 2026🙂😂 #fun ☕️ Telegram | Website | Discord
  2. Oct 8, 2026برای اولین بار در تاریخ CVE ها یک عدد 6 رقمی گرفتند! و این عمق فاجعه آسیب پذیری های پیدا ش…
  3. Oct 7, 2026کداکسپلور | CodeExplore pinned a photo
  4. Oct 7, 2026🤖 Routy؛ مدیریت روزت، مستقیم داخل تلگرام تسک‌هات رو بساز، عادت‌هات رو ثبت کن، یادآوری بگی…
  5. Oct 7, 2026Post #4854
  6. Oct 7, 2026‏Graphify یه ابزار اوپن سورسه که باهاش میتونید ببینید بخشای مختلف پروژه چطور به هم وصل…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →