شروع کار با Go: نصب و اولین برنامه “Hello World”

فهرست مطالب

شروع کار با Go: نصب و اولین برنامه “Hello World”

زبان برنامه‌نویسی Go، که اغلب به آن Golang نیز گفته می‌شود، در سال ۲۰۰۹ توسط رابرت گریزمر، راب پایک و کن تامپسون در گوگل معرفی شد. این زبان با هدف حل چالش‌های توسعه نرم‌افزارهای مدرن، به‌ویژه در محیط‌های توزیع‌شده و مقیاس‌پذیر، طراحی شده است. Go به دلیل سادگی، عملکرد بالا و قابلیت‌های داخلی عالی برای همزمانی (concurrency)، به سرعت در میان توسعه‌دهندگان محبوبیت پیدا کرده و به ابزاری قدرتمند برای ساخت وب‌سرویس‌ها، ابزارهای خط فرمان، سیستم‌های ابری و زیرساخت تبدیل شده است.

این راهنما جامع، شما را در فرآیند نصب Go بر روی سیستم‌عامل‌های مختلف و سپس ساخت و اجرای اولین برنامه “Hello World” همراهی خواهد کرد. هدف این مقاله، فراهم آوردن یک مسیر روشن و گام به گام برای شروع کار با Go، همراه با توضیحات عمیق‌تر برای درک بهتر مفاهیم زیربنایی است. با ما همراه باشید تا وارد دنیای قدرتمند و کارآمد Go شوید.

معرفی زبان برنامه‌نویسی Go (Golang): چرا باید Go را یاد بگیریم؟

زبان Go، که از آن به عنوان زبان برنامه‌نویسی برای عصر جدید یاد می‌شود، با توجه به نیازهای برنامه‌نویسی مدرن طراحی شده است. توسعه‌دهندگان آن در گوگل به دنبال زبانی بودند که بتواند بهره‌وری توسعه‌دهنده را در پروژه‌های بزرگ با پایگاه‌های کد وسیع افزایش دهد، در عین حال که عملکردی در حد C++ یا جاوا ارائه کند. این زبان با تمرکز بر سادگی، خوانایی و کارایی، ویژگی‌های برجسته‌ای را ارائه می‌دهد که آن را برای کاربردهای متنوعی ایده‌آل ساخته است.

ویژگی‌های کلیدی Go که آن را منحصر به فرد می‌کند:

  • همزمانی (Concurrency) داخلی: یکی از برجسته‌ترین ویژگی‌های Go، پشتیبانی بومی و قدرتمند آن از همزمانی است. با استفاده از goroutines (توابع سبک وزن همزمان) و channels (مسیرهای ارتباطی امن بین goroutineها)، Go به توسعه‌دهندگان این امکان را می‌دهد که به راحتی برنامه‌هایی با عملکرد بالا و مقیاس‌پذیر بنویسند. این مدل، پیچیدگی‌های مرتبط با برنامه‌نویسی چند رشته‌ای سنتی را به شدت کاهش می‌دهد.
  • کامپایل سریع: Go یک زبان کامپایلری است که به کدهای ماشین قابل اجرا تبدیل می‌شود. با این حال، زمان کامپایل آن به طرز شگفت‌آوری سریع است، حتی برای پروژه‌های بزرگ. این ویژگی باعث می‌شود چرخه توسعه سریع‌تر شود و توسعه‌دهندگان بتوانند تغییرات را به سرعت آزمایش کنند.
  • زبان ایستا و دارای نوع قوی (Statically Typed and Strongly Typed): Go یک زبان ایستا و دارای نوع قوی است، به این معنی که انواع متغیرها در زمان کامپایل بررسی می‌شوند. این رویکرد به جلوگیری از بسیاری از خطاهای زمان اجرا کمک کرده و کد قابل اطمینان‌تری را نتیجه می‌دهد.
  • مدیریت حافظه خودکار (Garbage Collection): Go دارای یک garbage collector (جمع‌آوری‌کننده زباله) داخلی است که به صورت خودکار حافظه تخصیص یافته را مدیریت می‌کند. این ویژگی نیاز به مدیریت دستی حافظه را از بین می‌برد و از خطاهای رایج مانند نشت حافظه (memory leaks) جلوگیری می‌کند.
  • ابزارهای داخلی غنی: اکوسیستم Go شامل مجموعه‌ای جامع از ابزارهای داخلی است که فرآیند توسعه را تسهیل می‌کند. این ابزارها شامل فرمت‌دهنده کد (go fmt)، ابزار تست (go test)، ابزار بررسی وابستگی‌ها (go mod) و غیره می‌شوند.
  • کراس‌پلتفرم (Cross-Platform): Go به راحتی می‌تواند برای سیستم‌عامل‌های مختلفی مانند ویندوز، لینوکس و macOS کامپایل شود، که این ویژگی آن را برای توسعه برنامه‌هایی که نیاز به اجرا در محیط‌های متنوع دارند، بسیار مناسب می‌سازد.
  • سادگی و خوانایی: سینتکس Go به گونه‌ای طراحی شده است که ساده و قابل فهم باشد. این سادگی به خوانایی بالای کد و نگهداری آسان‌تر آن کمک می‌کند، که برای پروژه‌های تیمی بسیار مهم است.

کاربردهای اصلی Go:

  • وب‌سرویس‌ها و APIها: Go به دلیل عملکرد بالا، همزمانی و کارایی شبکه، انتخاب اول بسیاری از شرکت‌ها برای ساخت وب‌سرویس‌های RESTful و gRPC، میکروسرویس‌ها و بک‌اندهای وب است.
  • ابزارهای خط فرمان (CLI Tools): کامپایل شدن به یک باینری مستقل و قابل اجرا، Go را برای ساخت ابزارهای خط فرمان قدرتمند و سریع ایده‌آل می‌کند. بسیاری از ابزارهای معروف مانند Docker و Kubernetes با Go نوشته شده‌اند.
  • سیستم‌های ابری و زیرساخت: با توجه به نیاز روزافزون به سیستم‌های مقیاس‌پذیر و توزیع‌شده در محیط‌های ابری، Go به دلیل قابلیت‌های همزمانی و کارایی، انتخاب محبوبی برای توسعه ابزارهای زیرساختی و پلتفرم‌های ابری است.
  • شبکه‌سازی: Go دارای کتابخانه‌های قدرتمند داخلی برای شبکه‌سازی است که آن را برای توسعه سرورهای شبکه، پراکسی‌ها و دیگر برنامه‌های مبتنی بر شبکه بسیار مناسب می‌سازد.

با توجه به این ویژگی‌ها و کاربردها، یادگیری Go می‌تواند یک سرمایه‌گذاری ارزشمند در مسیر شغلی شما باشد. این زبان نه تنها به شما کمک می‌کند تا برنامه‌های کارآمدتر و مقیاس‌پذیرتری بنویسید، بلکه تقاضا برای توسعه‌دهندگان Go در بازار کار نیز رو به افزایش است.

پیش‌نیازهای نصب Go و آشنایی با سیستم‌عامل‌های مختلف

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

دانش پایه سیستم‌عامل:

شما باید با مفاهیم اساسی سیستم‌عامل خود (ویندوز، لینوکس یا macOS) آشنا باشید. این شامل موارد زیر است:

  • خط فرمان (Command Line Interface – CLI) یا ترمینال: نصب و اجرای برنامه‌های Go عمدتاً از طریق خط فرمان انجام می‌شود. شما باید بدانید که چگونه یک خط فرمان (مثل Command Prompt یا PowerShell در ویندوز، Terminal در لینوکس و macOS) را باز کنید و دستورات پایه مانند تغییر دایرکتوری (cd)، لیست کردن فایل‌ها (dir در ویندوز، ls در لینوکس/macOS) و اجرای برنامه‌ها را بلد باشید.
  • متغیرهای محیطی (Environment Variables): Go برای کارکرد صحیح خود به متغیرهای محیطی خاصی متکی است، به‌ویژه متغیر PATH. متغیر PATH به سیستم‌عامل شما می‌گوید که هنگام اجرای یک دستور، کجا به دنبال فایل‌های اجرایی بگردد. شما باید با نحوه مشاهده و در صورت نیاز، ویرایش متغیرهای محیطی در سیستم‌عامل خود آشنا باشید.
  • امتیازات مدیر/سوپر یوزر (Administrator/Sudo Privileges): در برخی مراحل نصب، به‌ویژه هنگام نصب در مسیرهای سیستمی (مانند /usr/local در لینوکس و macOS) یا تغییر متغیرهای محیطی سیستمی، نیاز به امتیازات مدیر یا سوپر یوزر (sudo در لینوکس و macOS، Run as administrator در ویندوز) خواهید داشت.

اتصال به اینترنت:

برای دانلود پکیج نصب Go و همچنین دریافت ماژول‌ها و پکیج‌های شخص ثالث، نیاز به اتصال اینترنت پایدار خواهید داشت.

فضای دیسک کافی:

فایل‌های نصب Go حجم زیادی ندارند (معمولاً چند صد مگابایت)، اما اطمینان حاصل کنید که فضای دیسک کافی برای نصب خود Go و همچنین پروژه‌های آینده خود دارید.

درک معماری سیستم:

Go برای معماری‌های مختلف پردازنده (مانند x86-64 و ARM) نسخه‌های متفاوتی دارد. معمولاً در سیستم‌عامل‌های مدرن، معماری x86-64 (که با نام amd64 در Go نیز شناخته می‌شود) رایج است. اطمینان حاصل کنید که نسخه‌ای از Go را دانلود می‌کنید که با معماری پردازنده سیستم شما سازگار است. در ویندوز و لینوکس، می‌توانید این اطلاعات را در تنظیمات سیستم یا با دستوراتی مانند lscpu (در لینوکس) یا systeminfo (در ویندوز) پیدا کنید.

نسخه سیستم‌عامل:

اطمینان حاصل کنید که سیستم‌عامل شما یک نسخه پشتیبانی شده توسط Go را اجرا می‌کند. معمولاً Go از نسخه‌های اخیر سیستم‌عامل‌ها پشتیبانی می‌کند. برای جزئیات دقیق، می‌توانید به مستندات رسمی Go مراجعه کنید.

با رعایت این پیش‌نیازها، آماده شروع فرآیند نصب Go بر روی سیستم‌عامل دلخواه خود خواهید بود.

راهنمای گام به گام نصب Go در ویندوز

نصب Go در ویندوز فرآیندی نسبتاً ساده است و اغلب از طریق یک نصب‌کننده MSI انجام می‌شود که به صورت خودکار متغیرهای محیطی لازم را تنظیم می‌کند. در ادامه مراحل کامل نصب را شرح می‌دهیم:

گام ۱: دانلود نصب‌کننده Go

  1. مرورگر وب خود را باز کرده و به وب‌سایت رسمی Go بروید: https://golang.org/dl/.
  2. در این صفحه، نسخه‌های مختلف Go برای سیستم‌عامل‌های گوناگون را مشاهده خواهید کرد. به دنبال بخش “Windows” بگردید و نسخه MSI installer را برای معماری سیستم خود (معمولاً x86-64 یا amd64) دانلود کنید. فایل دانلود شده معمولاً چیزی شبیه به go1.x.x.windows-amd64.msi خواهد بود.

گام ۲: اجرای نصب‌کننده Go

  1. پس از اتمام دانلود، روی فایل .msi دانلود شده دوبار کلیک کنید تا نصب‌کننده Go اجرا شود.
  2. پنجره “Welcome to the Go Programming Language Setup Wizard” ظاهر خواهد شد. روی “Next” کلیک کنید.
  3. در صفحه “End-User License Agreement”، توافق‌نامه لایسنس را مطالعه کرده و اگر موافقید، تیک “I accept the terms in the License Agreement” را بزنید و سپس روی “Next” کلیک کنید.
  4. در صفحه “Destination Folder”، می‌توانید مسیر نصب Go را مشخص کنید. مسیر پیش‌فرض معمولاً C:\Program Files\Go\ است که توصیه می‌شود آن را تغییر ندهید، مگر اینکه دلیل خاصی برای این کار داشته باشید. روی “Next” کلیک کنید.
  5. در صفحه “Ready to install Go Programming Language”، روی “Install” کلیک کنید تا فرآیند نصب آغاز شود. ممکن است User Account Control (UAC) ویندوز از شما اجازه بخواهد؛ در این صورت، روی “Yes” کلیک کنید.
  6. صبر کنید تا فرآیند نصب تکمیل شود. پس از اتمام، روی “Finish” کلیک کنید تا ویزارد نصب بسته شود.

گام ۳: تأیید نصب Go و بررسی متغیر PATH

نصب‌کننده MSI به صورت خودکار متغیر محیطی PATH را برای شما تنظیم می‌کند، اما مهم است که صحت نصب را تأیید کنید.

  1. باز کردن Command Prompt یا PowerShell:

    • در نوار جستجوی ویندوز، cmd را تایپ کرده و Enter بزنید تا Command Prompt باز شود.
    • یا powershell را تایپ کرده و Enter بزنید تا PowerShell باز شود.

    نکته مهم: اگر قبل از نصب Go، Command Prompt یا PowerShell را باز کرده بودید، پس از نصب باید آن را بسته و دوباره باز کنید تا تغییرات متغیر PATH اعمال شوند.

  2. بررسی نسخه Go:

    در خط فرمان، دستور زیر را تایپ کرده و Enter بزنید:

    go version

    اگر نصب موفقیت‌آمیز بوده باشد، خروجی مشابه زیر را مشاهده خواهید کرد که نشان‌دهنده نسخه Go نصب شده است:

    go version go1.x.x windows/amd64
  3. بررسی متغیرهای محیطی Go:

    می‌توانید اطلاعات بیشتری در مورد پیکربندی Go با دستور زیر به دست آورید:

    go env

    این دستور لیستی از متغیرهای محیطی Go را نمایش می‌دهد، از جمله GOROOT (مسیر نصب Go) و GOPATH (مسیر پیش‌فرض برای فضای کاری Go شما). GOPATH معمولاً به %USERPROFILE%\go (مثلاً C:\Users\YourUser\go) تنظیم می‌شود. از Go 1.11 به بعد و با معرفی Go Modules، اهمیت GOPATH برای مدیریت پروژه‌ها کاهش یافته، اما همچنان برای برخی ابزارها یا پروژه‌های قدیمی‌تر کاربرد دارد.

عیب‌یابی (Troubleshooting) در ویندوز:

اگر دستور go version کار نکرد و پیامی مانند “'go' is not recognized as an internal or external command, operable program or batch file.” دریافت کردید، به احتمال زیاد مشکل از متغیر PATH است. در این صورت، باید آن را به صورت دستی تنظیم کنید:

  1. باز کردن تنظیمات متغیرهای محیطی:

    • در نوار جستجوی ویندوز، environment variables را تایپ کنید و سپس روی “Edit the system environment variables” کلیک کنید.
    • در پنجره “System Properties”، روی دکمه “Environment Variables…” کلیک کنید.
  2. ویرایش متغیر PATH:

    • در بخش “System variables” (متغیرهای سیستمی) یا “User variables for [Your Username]” (متغیرهای کاربری)، متغیر “Path” را پیدا کرده و آن را انتخاب کنید. سپس روی “Edit…” کلیک کنید.
    • در پنجره “Edit environment variable”، روی “New” کلیک کنید و مسیر پوشه bin در محل نصب Go را اضافه کنید. این مسیر معمولاً C:\Program Files\Go\bin است.
    • روی “OK” کلیک کنید تا همه پنجره‌ها بسته شوند.
  3. راه‌اندازی مجدد خط فرمان: Command Prompt یا PowerShell را بسته و دوباره باز کنید و سپس دوباره go version را امتحان کنید. باید اکنون کار کند.

با اتمام این مراحل، Go به درستی بر روی سیستم ویندوز شما نصب شده و آماده استفاده است.

راهنمای گام به گام نصب Go در لینوکس (بروزرسانی از طریق پکیج منیجر و دستی)

نصب Go در لینوکس را می‌توان به دو روش اصلی انجام داد: استفاده از پکیج منیجر سیستم (مانند apt یا dnf) یا نصب دستی از فایل‌های تاربال. روش دستی معمولاً توصیه می‌شود، زیرا تضمین می‌کند که آخرین نسخه پایدار Go را نصب می‌کنید، در حالی که نسخه‌های موجود در مخازن پکیج منیجرها ممکن است قدیمی‌تر باشند.

روش ۱: نصب Go با استفاده از پکیج منیجر (توصیه نمی‌شود مگر برای تست سریع)

این روش سریع و آسان است، اما همانطور که ذکر شد، ممکن است نسخه قدیمی‌تری از Go را نصب کند.

برای سیستم‌های مبتنی بر Debian/Ubuntu:

  1. ترمینال را باز کنید.
  2. بسته‌های سیستم را بروزرسانی کنید:

    sudo apt update
  3. Go را نصب کنید:

    sudo apt install golang-go
  4. پس از اتمام نصب، می‌توانید با دستور go version نصب را تأیید کنید.

برای سیستم‌های مبتنی بر Fedora/RHEL/CentOS:

  1. ترمینال را باز کنید.
  2. Go را نصب کنید:

    sudo dnf install golang

    یا برای CentOS/RHEL قدیمی‌تر:

    sudo yum install golang
  3. پس از اتمام نصب، می‌توانید با دستور go version نصب را تأیید کنید.

روش ۲: نصب دستی Go (توصیه شده برای آخرین نسخه)

این روش به شما کنترل بیشتری بر روی نسخه Go و محل نصب می‌دهد. توصیه می‌شود Go را در مسیر /usr/local نصب کنید.

گام ۱: دانلود فایل تاربال Go

  1. مرورگر وب خود را باز کرده و به وب‌سایت رسمی Go بروید: https://golang.org/dl/.
  2. در بخش “Linux”، نسخه tar.gz را برای معماری سیستم خود (معمولاً x86-64 یا amd64) دانلود کنید. فایل دانلود شده شبیه go1.x.x.linux-amd64.tar.gz خواهد بود.
  3. می‌توانید این کار را از طریق خط فرمان نیز انجام دهید. برای مثال، برای دانلود آخرین نسخه (مثلاً Go 1.22.1 در زمان نگارش این مقاله)، می‌توانید از wget یا curl استفاده کنید. همیشه URL را با آخرین نسخه از صفحه دانلود Go بررسی کنید:

    wget https://golang.org/dl/go1.22.1.linux-amd64.tar.gz

گام ۲: حذف هرگونه نصب قبلی (اختیاری اما توصیه شده)

اگر قبلاً Go را نصب کرده‌اید، بهتر است ابتدا آن را حذف کنید تا از تداخل جلوگیری شود. اگر با پکیج منیجر نصب کرده‌اید، می‌توانید آن را حذف کنید:

sudo apt remove golang-go # برای Debian/Ubuntu
sudo dnf remove golang # برای Fedora/RHEL/CentOS

اگر به صورت دستی نصب کرده‌اید (مثلاً در /usr/local/go)، می‌توانید پوشه را حذف کنید:

sudo rm -rf /usr/local/go

گام ۳: استخراج فایل تاربال Go به مسیر نصب

فایل دانلود شده را به مسیر /usr/local استخراج کنید. این کار باعث می‌شود یک پوشه به نام go در /usr/local ایجاد شود که حاوی فایل‌های نصب Go است.

sudo tar -C /usr/local -xzf go1.22.1.linux-amd64.tar.gz

توضیح دستور:

  • sudo: برای اجرای دستور با امتیازات مدیر.
  • tar: ابزار برای کار با فایل‌های tar.
  • -C /usr/local: مشخص می‌کند که فایل‌ها در دایرکتوری /usr/local استخراج شوند.
  • -xzf:
    • x: استخراج (extract).
    • z: به معنی اینکه فایل با gzip فشرده شده است.
    • f: مشخص کردن نام فایل ورودی.
  • go1.22.1.linux-amd64.tar.gz: نام فایل دانلود شده.

گام ۴: تنظیم متغیرهای محیطی GOROOT و PATH

برای اینکه سیستم‌عامل شما بداند Go کجا نصب شده و فایل‌های اجرایی آن را پیدا کند، باید متغیرهای محیطی GOROOT و PATH را تنظیم کنید. این کار معمولاً با اضافه کردن چند خط به فایل پروفایل شل شما (مانند ~/.bashrc، ~/.zshrc یا ~/.profile) انجام می‌شود. ~/.profile برای تنظیمات سراسری که برای همه نشست‌های ورود به سیستم اعمال می‌شوند، مناسب‌تر است.

  1. فایل پروفایل خود را با یک ویرایشگر متنی باز کنید. مثلاً برای .bashrc:

    nano ~/.bashrc

    یا برای .profile (اگر از Bash یا Zsh استفاده می‌کنید):

    nano ~/.profile
  2. خطوط زیر را در انتهای فایل اضافه کنید:

    export GOROOT=/usr/local/go
    export PATH=$PATH:$GOROOT/bin

    توضیح:

    • export GOROOT=/usr/local/go: متغیر GOROOT را به مسیر نصب Go (پوشه go در /usr/local) تنظیم می‌کند.
    • export PATH=$PATH:$GOROOT/bin: مسیر پوشه bin (که حاوی فایل‌های اجرایی Go مانند go، gofmt و go tool است) را به متغیر PATH موجود شما اضافه می‌کند. این به سیستم‌عامل اجازه می‌دهد تا دستورات Go را از هر دایرکتوری اجرا کند.
  3. فایل را ذخیره کرده و ببندید (در nano، با Ctrl+X، سپس Y و Enter).
  4. اعمال تغییرات: برای اینکه تغییرات اعمال شوند، باید ترمینال خود را بسته و دوباره باز کنید، یا دستور source را برای فایل پروفایل خود اجرا کنید:

    source ~/.bashrc

    یا

    source ~/.profile

گام ۵: تأیید نصب Go

پس از تنظیم متغیرهای محیطی، می‌توانید با دستورات زیر از صحت نصب Go اطمینان حاصل کنید:

  1. بررسی نسخه Go:

    go version

    خروجی باید مشابه زیر باشد:

    go version go1.x.x linux/amd64
  2. بررسی متغیرهای محیطی Go:

    go env

    این دستور لیستی از متغیرهای محیطی Go را نمایش می‌دهد، از جمله GOROOT (که باید /usr/local/go باشد) و GOPATH. GOPATH به صورت پیش‌فرض در لینوکس به $HOME/go تنظیم می‌شود (مثلاً /home/youruser/go).

عیب‌یابی (Troubleshooting) در لینوکس:

  • go: command not found: این خطا به این معنی است که PATH شما به درستی تنظیم نشده است. مطمئن شوید که خطوط export را به درستی به فایل پروفایل خود اضافه کرده‌اید و پس از آن source کرده یا ترمینال را راه‌اندازی مجدد کرده‌اید. همچنین، مطمئن شوید که پوشه /usr/local/go/bin واقعاً وجود دارد.
  • مشکلات دسترسی (Permission denied): اگر هنگام استخراج فایل تاربال با خطای دسترسی مواجه شدید، مطمئن شوید که از sudo استفاده کرده‌اید.
  • نسخه Go قدیمی است: اگر پس از نصب دستی، go version هنوز نسخه قدیمی را نشان می‌دهد، ممکن است یک نصب Go قدیمی‌تر در PATH شما (که اولویت دارد) وجود داشته باشد. مسیرهای PATH خود را با echo $PATH بررسی کنید و مطمئن شوید که /usr/local/go/bin قبل از هر مسیر Go قدیمی دیگری قرار دارد.

با اتمام این مراحل، Go به درستی بر روی سیستم لینوکس شما نصب شده و آماده استفاده است.

راهنمای گام به گام نصب Go در macOS

نصب Go در macOS نیز همانند لینوکس، هم از طریق مدیریت بسته‌ها (Homebrew) و هم به صورت دستی امکان‌پذیر است. استفاده از Homebrew برای بسیاری از توسعه‌دهندگان macOS روش ترجیحی است، زیرا فرآیند را ساده‌تر و مدیریت نسخه‌ها را آسان‌تر می‌کند.

روش ۱: نصب Go با استفاده از Homebrew (توصیه شده)

Homebrew یک مدیریت بسته برای macOS است که نصب و به‌روزرسانی نرم‌افزارها را بسیار آسان می‌کند. اگر Homebrew را ندارید، ابتدا باید آن را نصب کنید.

گام ۱.۱: نصب Homebrew (اگر قبلاً نصب نشده است)

  1. ترمینال (Terminal.app) را از Applications/Utilities باز کنید.
  2. دستور زیر را در ترمینال کپی و اجرا کنید. این دستور Homebrew را نصب می‌کند:

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  3. دستورالعمل‌های روی صفحه را دنبال کنید، ممکن است از شما رمز عبور سیستم خواسته شود.
  4. پس از اتمام نصب، برای اطمینان از صحت نصب، دستور brew doctor را اجرا کنید. اگر مشکلی وجود نداشت، پیغام “Your system is ready to brew.” را مشاهده خواهید کرد.

گام ۱.۲: نصب Go با Homebrew

  1. پس از نصب Homebrew، به راحتی می‌توانید Go را نصب کنید:

    brew install go

    Homebrew به صورت خودکار آخرین نسخه پایدار Go را دانلود و نصب می‌کند و متغیرهای محیطی لازم را تنظیم می‌کند.

  2. پس از اتمام نصب، برای تأیید نصب Go، دستور زیر را اجرا کنید:

    go version

    شما باید خروجی مشابه go version go1.x.x darwin/amd64 (برای مک‌های اینتل) یا go version go1.x.x darwin/arm64 (برای مک‌های M1/M2/M3) را مشاهده کنید.

همین! Go با موفقیت از طریق Homebrew بر روی macOS شما نصب شده است.

روش ۲: نصب دستی Go (جایگزین Homebrew)

اگر ترجیح می‌دهید Go را به صورت دستی نصب کنید یا به هر دلیلی نمی‌توانید از Homebrew استفاده کنید، این روش را دنبال کنید.

گام ۲.۱: دانلود فایل تاربال Go

  1. مرورگر وب خود را باز کرده و به وب‌سایت رسمی Go بروید: https://golang.org/dl/.
  2. در بخش “macOS”، نسخه tar.gz را برای معماری سیستم خود (x86-64 برای مک‌های اینتل یا ARM64 برای مک‌های M1/M2/M3) دانلود کنید. فایل دانلود شده شبیه go1.x.x.darwin-amd64.tar.gz یا go1.x.x.darwin-arm64.tar.gz خواهد بود.
  3. می‌توانید این کار را از طریق ترمینال نیز انجام دهید. برای مثال، برای دانلود آخرین نسخه (همیشه URL را با آخرین نسخه از صفحه دانلود Go بررسی کنید):

    wget https://golang.org/dl/go1.22.1.darwin-amd64.tar.gz # برای مک‌های اینتل
    wget https://golang.org/dl/go1.22.1.darwin-arm64.tar.gz # برای مک‌های M1/M2/M3

گام ۲.۲: حذف هرگونه نصب قبلی (اختیاری اما توصیه شده)

اگر قبلاً Go را نصب کرده‌اید (مثلاً از طریق Homebrew)، بهتر است ابتدا آن را حذف کنید:

brew uninstall go # اگر با Homebrew نصب کرده‌اید

اگر به صورت دستی نصب کرده‌اید (مثلاً در /usr/local/go)، می‌توانید پوشه را حذف کنید:

sudo rm -rf /usr/local/go

گام ۲.۳: استخراج فایل تاربال Go به مسیر نصب

فایل دانلود شده را به مسیر /usr/local استخراج کنید. این کار باعث می‌شود یک پوشه به نام go در /usr/local ایجاد شود که حاوی فایل‌های نصب Go است.

sudo tar -C /usr/local -xzf go1.22.1.darwin-amd64.tar.gz # نام فایل دانلود شده شما

توضیح دستور: مشابه نصب در لینوکس است. -C /usr/local به tar می‌گوید که فایل‌ها را در /usr/local استخراج کند.

گام ۲.۴: تنظیم متغیرهای محیطی GOROOT و PATH

برای اینکه سیستم‌عامل شما فایل‌های اجرایی Go را پیدا کند، باید متغیرهای محیطی GOROOT و PATH را تنظیم کنید. این کار معمولاً با اضافه کردن چند خط به فایل پروفایل شل شما (مانند ~/.bash_profile، ~/.zshrc یا ~/.profile) انجام می‌شود. در macOS Catalina به بعد، Zsh شل پیش‌فرض است، بنابراین ~/.zshrc معمولاً فایل مناسبی است. در نسخه‌های قدیمی‌تر macOS، ~/.bash_profile یا ~/.profile مناسب است.

  1. فایل پروفایل خود را با یک ویرایشگر متنی باز کنید. مثلاً برای .zshrc:

    nano ~/.zshrc

    یا برای .bash_profile:

    nano ~/.bash_profile
  2. خطوط زیر را در انتهای فایل اضافه کنید:

    export GOROOT=/usr/local/go
    export PATH=$PATH:$GOROOT/bin

    توضیح: مشابه نصب در لینوکس است. GOROOT به Go می‌گوید کجا نصب شده و PATH به سیستم‌عامل می‌گوید که کجا فایل‌های اجرایی Go را پیدا کند.

  3. فایل را ذخیره کرده و ببندید.
  4. اعمال تغییرات: برای اینکه تغییرات اعمال شوند، باید ترمینال خود را بسته و دوباره باز کنید، یا دستور source را برای فایل پروفایل خود اجرا کنید:

    source ~/.zshrc

    یا

    source ~/.bash_profile

گام ۲.۵: تأیید نصب Go

پس از تنظیم متغیرهای محیطی، می‌توانید با دستورات زیر از صحت نصب Go اطمینان حاصل کنید:

  1. بررسی نسخه Go:

    go version

    خروجی باید مشابه go version go1.x.x darwin/amd64 یا go version go1.x.x darwin/arm64 باشد.

  2. بررسی متغیرهای محیطی Go:

    go env

    این دستور لیستی از متغیرهای محیطی Go را نمایش می‌دهد، از جمله GOROOT (که باید /usr/local/go باشد) و GOPATH (که به صورت پیش‌فرض در macOS به $HOME/go تنظیم می‌شود).

عیب‌یابی (Troubleshooting) در macOS:

  • go: command not found: به این معنی است که PATH به درستی تنظیم نشده است. مطمئن شوید که فایل پروفایل صحیح را ویرایش کرده‌اید (.bash_profile در Bash، .zshrc در Zsh) و آن را source کرده یا ترمینال را راه‌اندازی مجدد کرده‌اید.
  • مشکلات دسترسی: اگر در مرحله استخراج فایل تاربال با خطای “Permission denied” مواجه شدید، مطمئن شوید که از sudo استفاده کرده‌اید.

با اتمام این مراحل، Go به درستی بر روی سیستم macOS شما نصب شده و آماده استفاده است.

تأیید نصب Go و بررسی متغیرهای محیطی

پس از اتمام فرآیند نصب Go بر روی هر یک از سیستم‌عامل‌ها (ویندوز، لینوکس، یا macOS)، بسیار مهم است که صحت نصب را تأیید کرده و با متغیرهای محیطی کلیدی Go آشنا شوید. این مرحله به شما اطمینان می‌دهد که Go به درستی در دسترس سیستم شما قرار گرفته و آماده اجرای برنامه‌ها است.

۱. تأیید نسخه Go

اولین و ساده‌ترین راه برای تأیید نصب، بررسی نسخه Go است. یک ترمینال جدید (Command Prompt یا PowerShell در ویندوز، Terminal در لینوکس و macOS) باز کرده و دستور زیر را اجرا کنید:

go version

خروجی مورد انتظار:

اگر نصب موفقیت‌آمیز بوده باشد، شما باید نسخه‌ای از Go را که نصب کرده‌اید، مشاهده کنید. برای مثال:

go version go1.22.1 windows/amd64   // برای ویندوز
go version go1.22.1 linux/amd64    // برای لینوکس
go version go1.22.1 darwin/amd64   // برای macOS (پردازنده‌های اینتل)
go version go1.22.1 darwin/arm64   // برای macOS (پردازنده‌های Apple Silicon)

اگر خطایی مانند “go: command not found” یا “'go' is not recognized as an internal or external command” دریافت کردید، به این معنی است که متغیر محیطی PATH شما به درستی تنظیم نشده است. به بخش “عیب‌یابی” مربوط به سیستم‌عامل خود بازگردید و مراحل تنظیم PATH را مرور کنید.

۲. بررسی متغیرهای محیطی Go با go env

Go چندین متغیر محیطی را برای پیکربندی رفتار خود استفاده می‌کند. دستور go env به شما امکان می‌دهد تمام متغیرهای محیطی فعال Go را مشاهده کنید. در خط فرمان خود، این دستور را اجرا کنید:

go env

خروجی مورد انتظار:

این دستور لیستی طولانی از متغیرها و مقادیر آن‌ها را نمایش می‌دهد. برخی از مهم‌ترین متغیرها که باید به آن‌ها توجه کنید عبارتند از:

  • GOROOT:

    این متغیر به مسیر ریشه نصب Go اشاره دارد. مقداری که برای این متغیر می‌بینید باید همان مسیری باشد که Go را در آن نصب کرده‌اید (مثلاً C:\Program Files\Go در ویندوز، یا /usr/local/go در لینوکس و macOS).

    اهمیت: Go از GOROOT برای پیدا کردن کتابخانه‌های استاندارد و ابزارهای داخلی خود استفاده می‌کند. این متغیر معمولاً توسط نصب‌کننده تنظیم می‌شود یا در روش دستی توسط شما تنظیم می‌شود.

  • GOPATH:

    این متغیر به مسیر فضای کاری (workspace) شما اشاره دارد، جایی که پروژه‌های Go، کدهای منبع، پکیج‌های شخص ثالث و باینری‌های کامپایل شده شما ذخیره می‌شوند. مسیر پیش‌فرض GOPATH معمولاً به $HOME/go (مثلاً C:\Users\YourUser\go در ویندوز، /home/youruser/go در لینوکس، /Users/YourUser/go در macOS) تنظیم می‌شود.

    اهمیت: قبل از Go 1.11، GOPATH نقش مرکزی در سازماندهی کد و مدیریت وابستگی‌ها داشت. با معرفی Go Modules (که در ادامه به آن می‌پردازیم)، نقش GOPATH برای پروژه‌های جدید کاهش یافته و دیگر نیازی نیست که کدهای پروژه شما لزوماً درون GOPATH قرار گیرند. با این حال، GOPATH همچنان برای ذخیره ابزارهای go install شده و برخی پروژه‌های قدیمی‌تر استفاده می‌شود. می‌توانید این مسیر را تغییر دهید، اما برای شروع، مقدار پیش‌فرض آن معمولاً مناسب است.

  • GOBIN:

    این متغیر به مسیری اشاره دارد که باینری‌های کامپایل شده (فایل‌های اجرایی) از دستور go install در آنجا قرار می‌گیرند. اگر GOBIN تنظیم نشده باشد، باینری‌ها به صورت پیش‌فرض در پوشه bin درون GOPATH شما قرار می‌گیرند (مثلاً $GOPATH/bin).

    اهمیت: اگر قصد دارید ابزارهای Go را نصب و آن‌ها را به صورت سراسری در دسترس داشته باشید، باید اطمینان حاصل کنید که $GOBIN (یا $GOPATH/bin) در PATH سیستم‌عامل شما نیز وجود دارد.

  • GOOS و GOARCH:

    این متغیرها به ترتیب سیستم‌عامل (Operating System) و معماری پردازنده (Architecture) فعلی که Go برای آن کامپایل شده است را نشان می‌دهند (مثلاً GOOS=windows و GOARCH=amd64). این متغیرها برای cross-compilation (کامپایل برای سیستم‌عامل/معماری دیگر) بسیار مفید هستند.

بررسی این متغیرها به شما کمک می‌کند تا مطمئن شوید که Go به درستی پیکربندی شده است و همچنین درک بهتری از نحوه تعامل Go با محیط سیستم خود پیدا کنید. اکنون که Go نصب و پیکربندی شده است، آماده نوشتن اولین برنامه خود هستیم!

اولین برنامه “Hello World” در Go: ساختار و اجرا

پس از نصب موفقیت‌آمیز Go، نوبت به نوشتن و اجرای اولین برنامه شما می‌رسد: “Hello World”. این برنامه ساده‌ترین راه برای تأیید اینکه همه چیز به درستی کار می‌کند و همچنین آشنایی با ساختار اولیه یک برنامه Go است.

گام ۱: ایجاد یک دایرکتوری برای پروژه

برای حفظ نظم، توصیه می‌شود یک دایرکتوری (پوشه) جدید برای هر پروژه Go ایجاد کنید. این کار به سازماندهی کدهای شما کمک می‌کند. در خط فرمان خود، دستورات زیر را برای ایجاد و ورود به یک دایرکتوری جدید اجرا کنید:

در ویندوز:

mkdir hello-go
cd hello-go

در لینوکس و macOS:

mkdir hello-go
cd hello-go

اکنون شما در دایرکتوری hello-go قرار دارید که محل قرارگیری فایل‌های پروژه شما خواهد بود.

گام ۲: ایجاد فایل main.go

یک فایل متنی جدید با نام main.go در داخل دایرکتوری hello-go ایجاد کنید. .go پسوند فایل‌های منبع Go است و main.go یک نام رایج برای فایل اصلی برنامه است. محتویات زیر را در آن قرار دهید:

package main

import "fmt"

func main() {
    fmt.Println("Hello, Go World!")
}

می‌توانید از هر ویرایشگر متنی ساده‌ای (مانند Notepad در ویندوز، gedit در لینوکس، TextEdit در macOS یا ویرایشگرهای کد پیشرفته‌تر مانند VS Code) برای این کار استفاده کنید. پس از وارد کردن کد، فایل را ذخیره کنید.

گام ۳: توضیح کد “Hello World”

بیایید خط به خط این برنامه ساده را بررسی کنیم تا با ساختار پایه یک برنامه Go آشنا شوید:

  • package main

    این خط نشان‌دهنده اعلان بسته (package declaration) است. در Go، هر فایل منبع باید متعلق به یک بسته باشد. package main یک بسته خاص است که به Go compiler (کامپایلر Go) می‌گوید که این بسته یک برنامه قابل اجرا (executable program) است و حاوی تابع main() است که نقطه شروع اجرای برنامه می‌باشد.

  • import "fmt"

    این خط یک بسته استاندارد Go به نام fmt را وارد (import) می‌کند. بسته fmt (مخفف format) توابعی برای قالب‌بندی و چاپ ورودی/خروجی (I/O) فراهم می‌کند، مشابه توابع printf و scanf در C. ما از تابع Println این بسته برای چاپ متن به کنسول استفاده خواهیم کرد.

    نکته: Go بسیار سخت‌گیر است! اگر یک بسته را وارد کنید و از آن استفاده نکنید، کامپایلر خطا می‌دهد. این ویژگی به کاهش کدهای مرده (dead code) و بهبود خوانایی کمک می‌کند.

  • func main() {
        // ...
    }

    این خط تعریف تابع main است. همانطور که گفته شد، تابع main() یک تابع خاص است. هر برنامه قابل اجرای Go باید دقیقاً یک تابع main در بسته main داشته باشد. اجرای برنامه از این تابع آغاز می‌شود.

    func کلمه کلیدی برای تعریف یک تابع است.

    پرانتزهای () پس از main نشان می‌دهند که این تابع هیچ آرگومانی (ورودی) نمی‌گیرد.

    آکولادهای {} بلوک کد تابع را مشخص می‌کنند.

  •     fmt.Println("Hello, Go World!")

    این خط کد واقعی است که “Hello, Go World!” را به خروجی استاندارد (معمولاً کنسول) چاپ می‌کند.

    • fmt.: به این معنی است که ما در حال فراخوانی تابعی از بسته fmt هستیم که در بالا وارد کرده‌ایم.
    • Println: نام تابع (مخفف “Print Line”). این تابع یک رشته (string) را به عنوان آرگومان می‌گیرد و آن را در یک خط جدید چاپ می‌کند.
    • "Hello, Go World!": یک رشته literal است که می‌خواهیم چاپ شود. رشته‌ها در Go با استفاده از دابل کوتیشن ("") محصور می‌شوند.

گام ۴: اجرای برنامه

Go چندین راه برای اجرای برنامه‌ها ارائه می‌دهد. دو روش اصلی عبارتند از go run و go build.

روش ۱: اجرای مستقیم با go run

دستور go run برای کامپایل و اجرای سریع یک برنامه استفاده می‌شود. این دستور فایل‌های منبع را کامپایل می‌کند، برنامه را اجرا می‌کند و سپس فایل‌های کامپایل شده موقت را حذف می‌کند. این برای آزمایش سریع کد بسیار مفید است.

در دایرکتوری hello-go در خط فرمان خود، دستور زیر را اجرا کنید:

go run main.go

خروجی مورد انتظار:

Hello, Go World!

تبریک می‌گویم! شما اولین برنامه Go خود را با موفقیت اجرا کردید.

روش ۲: کامپایل و سپس اجرا با go build

دستور go build یک فایل اجرایی باینری از کد منبع شما ایجاد می‌کند. این فایل اجرایی مستقل از Go Runtime است و می‌تواند بدون نیاز به نصب Go در سیستم هدف، اجرا شود. این روش برای توزیع برنامه‌های شما ایده‌آل است.

  1. کامپایل برنامه:

    در دایرکتوری hello-go در خط فرمان خود، دستور زیر را اجرا کنید:

    go build main.go

    این دستور یک فایل اجرایی در همان دایرکتوری hello-go ایجاد می‌کند. نام فایل اجرایی معمولاً همان نام دایرکتوری یا نام فایل منبع (بدون پسوند .go) خواهد بود، یعنی hello-go در لینوکس/macOS و hello-go.exe در ویندوز.

  2. اجرای فایل اجرایی:

    اکنون می‌توانید فایل اجرایی را مستقیماً اجرا کنید:

    در ویندوز:

    .\hello-go.exe

    در لینوکس و macOS:

    ./hello-go

خروجی مورد انتظار:

Hello, Go World!

تفاوت go run و go build:

  • go run: برای توسعه و آزمایش سریع است. کد را کامپایل می‌کند، اجرا می‌کند و سپس باینری موقت را حذف می‌کند. شما باینری قابل توزیع دریافت نمی‌کنید.
  • go build: یک باینری مستقل و قابل اجرا ایجاد می‌کند که می‌توانید آن را به هر کسی که سیستم‌عامل و معماری پردازنده مشابهی دارد، بدهید تا بدون نیاز به نصب Go آن را اجرا کند. این برای ساخت و انتشار برنامه‌ها استفاده می‌شود.

شما با موفقیت نصب Go را تأیید کرده و اولین برنامه خود را نوشتید و اجرا کردید. این نقطه شروع سفر شما در دنیای Go است.

آشنایی عمیق‌تر با ساختار پروژه Go و Go Modules

با اجرای برنامه “Hello World” شما اولین قدم را در دنیای Go برداشتید. اما برای توسعه پروژه‌های واقعی و مدیریت وابستگی‌ها، نیاز به درک عمیق‌تر از ساختار پروژه‌های Go و نحوه کار با Go Modules دارید. Go Modules، که از Go 1.11 معرفی و از Go 1.16 به بعد به طور کامل پیش‌فرض شده‌اند، روش استاندارد و مدرن برای مدیریت وابستگی‌ها و ساختار پروژه‌های Go هستند.

قبل از Go Modules: چالش‌های GOPATH

در نسخه‌های قدیمی‌تر Go، همه کدها باید در فضای کاری GOPATH قرار می‌گرفتند (معمولاً $HOME/go). ساختار GOPATH شامل سه زیرپوشه اصلی بود:

  • src: حاوی کدهای منبع پروژه شما و پکیج‌های شخص ثالث دانلود شده.
  • pkg: حاوی فایل‌های پکیج کامپایل شده.
  • bin: حاوی فایل‌های اجرایی کامپایل شده.

این ساختار باعث مشکلاتی در مدیریت نسخه‌های مختلف پکیج‌ها در پروژه‌های مختلف می‌شد (Dependency Hell). Go Modules برای حل این مشکلات و ارائه یک راه حل جامع‌تر و مدرن‌تر معرفی شد.

معرفی Go Modules: راه‌حل مدرن

Go Module مجموعه‌ای از پکیج‌های Go است که به عنوان یک واحد منتشر می‌شود. هر ماژول دارای یک مسیر ماژول (module path) است که به عنوان پیشوند برای تمام پکیج‌های درون ماژول استفاده می‌شود. یک ماژول توسط فایل go.mod در دایرکتوری ریشه آن تعریف می‌شود.

مزایای Go Modules:

  • مدیریت نسخه‌ها: به شما اجازه می‌دهد تا نسخه‌های دقیق وابستگی‌ها را برای هر پروژه مشخص کنید.
  • پروژه‌های خارج از GOPATH: دیگر نیازی نیست که کدهای پروژه شما لزوماً درون GOPATH قرار گیرند. شما می‌توانید پروژه‌های Go خود را در هر جایی از سیستم فایل خود ایجاد کنید.
  • ساخت‌های قابل تکرار: تضمین می‌کند که هر بار که پروژه را می‌سازید، از همان نسخه‌های وابستگی‌ها استفاده می‌شود.
  • کشینگ (Caching): Go ماژول‌ها را در یک کش سراسری (معمولاً $GOPATH/pkg/mod) ذخیره می‌کند تا از دانلودهای مکرر جلوگیری شود.

شروع یک پروژه جدید با Go Modules

برای شروع یک پروژه جدید با Go Modules، مراحل زیر را دنبال کنید:

۱. ایجاد یک دایرکتوری برای پروژه

یک پوشه جدید برای پروژه خود ایجاد کنید و وارد آن شوید. فرض کنید می‌خواهیم پروژه‌ای به نام my-first-module ایجاد کنیم:

mkdir my-first-module
cd my-first-module

۲. مقداردهی اولیه ماژول (Initialize the Module)

در دایرکتوری ریشه پروژه، دستور go mod init را اجرا کنید. این دستور یک فایل go.mod ایجاد می‌کند که ماژول شما را تعریف می‌کند. شما باید یک “مسیر ماژول” (module path) برای آن مشخص کنید، که معمولاً به شکل دامنه گیت‌هاب یا یک نام منحصربه‌فرد است. این نام، همان چیزی است که دیگران از آن برای وارد کردن پکیج‌های شما استفاده خواهند کرد.

go mod init example.com/my-first-module

پس از اجرا، یک فایل جدید به نام go.mod در دایرکتوری my-first-module خواهید دید. محتویات آن چیزی شبیه به این خواهد بود:

module example.com/my-first-module

go 1.22
  • module example.com/my-first-module: این خط مسیر ماژول شما را تعریف می‌کند.
  • go 1.22: این خط حداقل نسخه Go مورد نیاز برای کامپایل این ماژول را نشان می‌دهد.

۳. ایجاد فایل‌های Go

حالا می‌توانید فایل‌های Go خود را در این دایرکتوری ایجاد کنید. برای مثال، یک فایل main.go ایجاد کنید:

package main

import "fmt"

func main() {
    fmt.Println("Hello from my first Go Module!")
}

۴. اجرای برنامه

حالا می‌توانید برنامه خود را اجرا کنید. go run به طور خودکار ماژول شما را شناسایی می‌کند:

go run .

نقطه . به go run می‌گوید که فایل اصلی (main package) در دایرکتوری فعلی را پیدا و اجرا کند.

یا می‌توانید باینری آن را بسازید:

go build .

این یک فایل اجرایی به نام my-first-module (یا my-first-module.exe) در دایرکتوری جاری ایجاد می‌کند.

مدیریت وابستگی‌ها با Go Modules

یکی از مهمترین قابلیت‌های Go Modules، مدیریت وابستگی‌ها است. فرض کنید می‌خواهید از یک پکیج شخص ثالث در پروژه خود استفاده کنید. Go به صورت خودکار وابستگی‌ها را شناسایی و دانلود می‌کند.

مثال: استفاده از پکیج rsc.io/quote

بیایید برنامه main.go خود را تغییر دهیم تا از یک پکیج خارجی برای دریافت یک نقل قول استفاده کند:

package main

import (
    "fmt"
    "rsc.io/quote" // پکیج خارجی
)

func main() {
    fmt.Println(quote.Go())
}

زمانی که این کد را ذخیره می‌کنید و سپس go run . را اجرا می‌کنید، اتفاقات زیر رخ می‌دهد:

go run .

خروجی:

go: downloading rsc.io/quote v1.5.2
go: downloading rsc.io/sampler v1.3.0
go: added rsc.io/quote v1.5.2
go: added rsc.io/sampler v1.3.0
Don't communicate by sharing memory, share memory by communicating.

Go به صورت خودکار پکیج rsc.io/quote و هر وابستگی آن (مانند rsc.io/sampler) را دانلود می‌کند و اطلاعات آن‌ها را در فایل go.mod و یک فایل جدید به نام go.sum ثبت می‌کند.

فایل go.mod پس از اضافه شدن وابستگی:

module example.com/my-first-module

go 1.22

require (
    rsc.io/quote v1.5.2
    rsc.io/sampler v1.3.0 // indirect
)
  • require: این بخش وابستگی‌های مستقیم و غیرمستقیم پروژه شما را لیست می‌کند.
  • v1.5.2: این شماره نسخه پکیج rsc.io/quote است که Go دانلود و استفاده کرده است.
  • // indirect: نشان می‌دهد که rsc.io/sampler یک وابستگی غیرمستقیم است (یعنی rsc.io/quote به آن نیاز دارد، نه کد شما مستقیماً).

فایل go.sum:

فایل go.sum حاوی هش‌های رمزنگاری شده (cryptographic hashes) از هر ماژول دانلود شده است. این هش‌ها برای تضمین یکپارچگی و امنیت ماژول‌ها استفاده می‌شوند. اگر ماژولی در آینده تغییر کند، Go آن را تشخیص داده و به شما هشدار می‌دهد. شما باید هر دو فایل go.mod و go.sum را در سیستم کنترل نسخه خود (مانند Git) قرار دهید.

دستورات مفید Go Modules:

  • go mod tidy: وابستگی‌های ماژول را پاکسازی می‌کند. هر وابستگی استفاده نشده را حذف می‌کند و هر وابستگی جدید مورد نیاز را اضافه می‌کند. این دستور را اغلب اجرا کنید تا go.mod و go.sum تمیز و به‌روز بمانند.
  • go get [package path]: یک پکیج خاص را به وابستگی‌های شما اضافه یا به‌روزرسانی می‌کند. مثلاً go get rsc.io/quote@v1.5.2 یک نسخه خاص را دانلود می‌کند.
  • go mod download: همه وابستگی‌های لیست شده در go.mod را دانلود می‌کند.
  • go mod vendor: یک کپی از تمام وابستگی‌های شما را در دایرکتوری vendor در ریشه پروژه شما قرار می‌دهد. این برای سناریوهایی استفاده می‌شود که نیاز به کنترل کامل بر وابستگی‌ها دارید (مثلاً در محیط‌های بدون دسترسی به اینترنت).

درک و استفاده صحیح از Go Modules برای هر توسعه‌دهنده Go ضروری است، زیرا این ابزار قدرتمند، مدیریت پروژه و همکاری را به شدت تسهیل می‌کند.

ابزارهای توسعه و ویرایشگرهای کد برای Go

انتخاب یک محیط توسعه مناسب می‌تواند بهره‌وری شما را به شدت افزایش دهد. خوشبختانه، جامعه Go ابزارهای عالی و پلاگین‌های ویرایشگر کد را فراهم کرده است که تجربه‌ی توسعه با Go را بسیار لذت‌بخش می‌کند. در این بخش، به معرفی محبوب‌ترین ویرایشگرها و ابزارهای مرتبط با Go می‌پردازیم.

ویرایشگرهای کد محبوب برای Go:

۱. Visual Studio Code (VS Code) + Go Extension

چرا محبوب است: VS Code یک ویرایشگر کد سبک‌وزن، رایگان و متن‌باز از مایکروسافت است که با اکوسیستم وسیعی از افزونه‌ها و قابلیت‌های قدرتمند، به یکی از محبوب‌ترین ویرایشگرها در میان توسعه‌دهندگان تبدیل شده است. افزونه رسمی Go برای VS Code، که توسط تیم Go در گوگل توسعه یافته، آن را به یک IDE (محیط توسعه یکپارچه) کامل برای Go تبدیل می‌کند.

قابلیت‌های کلیدی با Go Extension:

  • IntelliSense (تکمیل خودکار کد): پیشنهادهای هوشمند برای توابع، متغیرها، پکیج‌ها و متدهای Go.
  • اشاره گر خطا (Error Linting): شناسایی و نمایش خطاهای سینتکسی و منطقی در زمان نوشتن کد.
  • قالب‌بندی کد (Code Formatting): با go fmt و goimports به صورت خودکار کد شما را قالب‌بندی می‌کند تا همیشه خوانا و استاندارد باشد.
  • دیباگینگ (Debugging): پشتیبانی کامل از دیباگینگ Go با استفاده از دیباگر delve.
  • رفاکتورینگ (Refactoring): ابزارهایی برای تغییر نام متغیرها/توابع، استخراج توابع و … .
  • پشتیبانی از Go Modules: مدیریت وابستگی‌ها، دانلود خودکار ماژول‌ها.
  • پرش به تعریف (Go to Definition): به شما امکان می‌دهد با کلیک بر روی یک نام (مثل تابع یا متغیر)، به تعریف آن در کد منبع بروید.

نحوه راه‌اندازی:

  1. VS Code را نصب کنید (اگر هنوز نصب نکرده‌اید).
  2. VS Code را باز کنید و به بخش Extensions (نماد مربع‌ها در نوار کناری) بروید.
  3. “Go” را جستجو کنید و افزونه “Go” توسط “Go Team at Google” را نصب کنید.
  4. پس از نصب، VS Code ممکن است از شما بخواهد که ابزارهای Go را نصب کنید (مانند gopls، delve، goimports). روی “Install All” کلیک کنید.

۲. GoLand by JetBrains

چرا محبوب است: GoLand یک IDE تجاری و تخصصی برای توسعه Go است که توسط JetBrains (توسعه‌دهنده IntelliJ IDEA) ساخته شده است. این یک IDE قدرتمند با قابلیت‌های فراوان است که برای توسعه‌دهندگان حرفه‌ای که به دنبال یک محیط توسعه جامع و بدون نقص هستند، ایده‌آل است.

قابلیت‌های کلیدی:

  • تمام قابلیت‌های موجود در VS Code (تکمیل کد، دیباگینگ، قالب‌بندی، رفاکتورینگ) را با کیفیت بالا ارائه می‌دهد.
  • تجزیه و تحلیل کد استاتیک پیشرفته برای پیدا کردن مشکلات بالقوه و بهبود کیفیت کد.
  • ابزارهای داخلی برای پایگاه‌های داده، کنترل نسخه (Git)، و توسعه وب (HTML, CSS, JavaScript).
  • دسترسی به ترمینال داخلی و ابزارهای خط فرمان Go.
  • تجربه کاربری بی‌نظیر و تنظیمات بسیار قابل شخصی‌سازی.

نحوه راه‌اندازی: GoLand را از وب‌سایت JetBrains دانلود و نصب کنید. این یک IDE پولی است، اما یک دوره آزمایشی رایگان ارائه می‌دهد و برای دانشجویان و پروژه‌های متن‌باز رایگان است.

۳. Sublime Text + GoSublime

چرا محبوب است: Sublime Text یک ویرایشگر کد سبک و بسیار سریع است که با افزونه‌ها و پکیج‌ها می‌توان آن را برای توسعه Go قدرتمند کرد. پکیج GoSublime قابلیت‌های Go-aware را به آن اضافه می‌کند.

قابلیت‌ها: تکمیل کد، linting، قالب‌بندی، و اجرای دستورات Go. اگر به دنبال یک ویرایشگر سبک با قابلیت‌های Go هستید، گزینه خوبی است.

۴. Vim / Neovim + پلاگین‌های Go

چرا محبوب است: Vim و Neovim ویرایشگرهای متنی مبتنی بر ترمینال هستند که برای توسعه‌دهندگانی که به دنبال حداکثر بهره‌وری و کنترل از طریق کیبورد هستند، بسیار محبوب‌اند. با نصب پلاگین‌های مناسب (مانند vim-go)، می‌توانند یک محیط توسعه Go بسیار قدرتمند فراهم کنند.

قابلیت‌ها: تکمیل کد، فرمت‌بندی، دیباگینگ، و ابزارهای دیگر Go.

سایر ابزارهای مفید Go:

  • gopls (Go Language Server): یک سرور زبان Go است که توسط VS Code و سایر ویرایشگرهای کد برای ارائه قابلیت‌هایی مانند تکمیل کد، ناوبری کد، و دیباگینگ استفاده می‌شود. این ابزار بخش اصلی تجربه توسعه مدرن Go است.
  • delve: دیباگر Go. اگر از VS Code یا GoLand استفاده می‌کنید، این ابزار به صورت خودکار برای دیباگینگ استفاده می‌شود.
  • goimports: ابزاری برای قالب‌بندی کد Go و به صورت خودکار اضافه/حذف کردن importها در فایل‌های Go. این ابزار معمولاً همراه با go fmt استفاده می‌شود و اغلب در ویرایشگرهای کد به صورت “فرمت در زمان ذخیره” پیکربندی می‌شود.
  • Git: سیستم کنترل نسخه ضروری برای هر پروژه نرم‌افزاری. مطمئن شوید که Git بر روی سیستم شما نصب شده است.

برای شروع، VS Code با افزونه Go یک نقطه شروع عالی و رایگان است که تقریباً تمام قابلیت‌های مورد نیاز برای توسعه Go را فراهم می‌کند. همانطور که تجربه شما افزایش می‌یابد، ممکن است به ابزارهای تخصصی‌تر یا یک IDE کامل مانند GoLand روی بیاورید.

عیب‌یابی رایج در هنگام نصب و اجرای Go

هنگام نصب و راه‌اندازی هر ابزار توسعه جدیدی، ممکن است با چالش‌هایی روبرو شوید. Go نیز از این قاعده مستثنی نیست. در اینجا به برخی از رایج‌ترین مشکلاتی که توسعه‌دهندگان در هنگام نصب و اجرای Go با آن‌ها مواجه می‌شوند، همراه با راه‌حل‌هایشان می‌پردازیم.

۱. خطای “go: command not found” یا “'go' is not recognized as an internal or external command

مشکل: این رایج‌ترین خطایی است که نشان می‌دهد سیستم‌عامل شما نمی‌تواند فایل اجرایی go را پیدا کند. دلیل اصلی این مشکل، عدم تنظیم صحیح یا اعمال نشدن متغیر محیطی PATH است.

راه‌حل:

  • ویندوز:

    • مطمئن شوید که C:\Program Files\Go\bin (یا هر مسیری که Go را در آن نصب کرده‌اید، به علاوه \bin) به متغیر سیستم Path اضافه شده است.
    • پس از افزودن یا ویرایش PATH، تمام Command Promptها یا PowerShellهای باز را ببندید و دوباره باز کنید. تغییرات PATH فقط در نشست‌های جدید ترمینال اعمال می‌شوند.
  • لینوکس و macOS:

    • مطمئن شوید که /usr/local/go/bin (یا مسیر نصب Go شما، به علاوه /bin) به متغیر PATH در فایل پروفایل شل شما (مانند ~/.bashrc، ~/.zshrc یا ~/.profile) اضافه شده است.
    • پس از ویرایش فایل پروفایل، دستور source ~/.bashrc (یا فایل مربوطه) را اجرا کنید یا ترمینال را بسته و دوباره باز کنید.
    • با echo $PATH بررسی کنید که مسیر go/bin واقعاً در PATH شما وجود دارد.
  • بررسی وجود فایل: مطمئن شوید که فایل اجرایی go واقعاً در مسیر GOROOT/bin (مثلاً /usr/local/go/bin/go) وجود دارد. اگر نه، ممکن است نصب شما ناقص بوده باشد.

۲. نصب چندین نسخه از Go و تداخل آن‌ها

مشکل: گاهی اوقات، توسعه‌دهندگان به صورت ناخواسته چندین نسخه از Go را نصب می‌کنند (مثلاً یکی از طریق پکیج منیجر و دیگری به صورت دستی). این می‌تواند منجر به استفاده از نسخه قدیمی یا غیرمنتظره Go شود.

راه‌حل:

  • بررسی PATH: echo $PATH را اجرا کنید. PATH از چپ به راست بررسی می‌شود. مسیری که زودتر در PATH ظاهر شود، اولویت دارد. مطمئن شوید که مسیر Go مورد نظر شما (مثلاً /usr/local/go/bin) قبل از سایر مسیرهای Go قدیمی قرار گرفته است.
  • حذف نسخه‌های قدیمی: توصیه می‌شود نسخه‌های Go که دیگر از آن‌ها استفاده نمی‌کنید را حذف کنید. اگر با پکیج منیجر نصب شده، از apt remove یا dnf remove استفاده کنید. اگر دستی نصب شده، پوشه GOROOT قدیمی را حذف کنید.

۳. مشکلات مربوط به ماژول‌ها و دانلود پکیج‌ها

مشکل: هنگام اجرای go mod tidy یا go get، ممکن است با خطاهایی مانند “connection refused” یا “unrecognized import path” مواجه شوید.

راه‌حل:

  • اتصال به اینترنت: مطمئن شوید که اتصال اینترنت پایداری دارید و فایروال یا پروکسی شما مانع از دسترسی Go به منابع خارجی نمی‌شود.
  • پیکربندی پروکسی (اگر پشت پروکسی هستید): اگر در یک محیط شرکتی هستید که نیاز به پروکسی دارد، متغیرهای محیطی HTTP_PROXY و HTTPS_PROXY را تنظیم کنید. برای مثال:

    export HTTP_PROXY="http://proxy.example.com:8080"
    export HTTPS_PROXY="http://proxy.example.com:8080"
    export NO_PROXY="localhost,127.0.0.1,.example.com"

    همچنین ممکن است نیاز به تنظیم GOPROXY داشته باشید. GOPROXY به Go می‌گوید که ماژول‌ها را از کجا دانلود کند. مقدار پیش‌فرض https://proxy.golang.org,direct معمولاً خوب است، اما در برخی محیط‌ها ممکن است نیاز به تغییر داشته باشد، مثلاً به direct برای دانلود مستقیم از مخزن:

    go env -w GOPROXY=direct

  • نام ماژول اشتباه: مطمئن شوید که مسیر ماژول (module path) در go.mod و مسیرهای import در کدهای شما صحیح هستند و با نام واقعی مخزن همخوانی دارند.

۴. خطاهای کامپایل یا اجرا

مشکل: پس از نوشتن کد Go، با خطاهایی هنگام go run یا go build مواجه می‌شوید.

راه‌حل:

  • خطاهای سینتکسی: Go یک زبان کامپایلری با قواعد سخت‌گیرانه است. کوچکترین اشتباهات سینتکسی (مثل استفاده نکردن از یک پکیج import شده، متغیر تعریف شده ولی استفاده نشده، یا فرمت‌بندی نامناسب) منجر به خطا می‌شوند. کامپایلر Go پیام‌های خطای بسیار مفیدی ارائه می‌دهد که شامل شماره خط و توضیحات دقیق مشکل هستند. پیام‌های خطا را با دقت بخوانید.
  • عدم استفاده از پکیج‌های وارد شده: همانطور که ذکر شد، Go اجازه نمی‌دهد پکیج‌هایی را import کنید که از آن‌ها استفاده نمی‌کنید. اگر خطایی مانند “imported and not used: "fmt"” دریافت کردید، یا import را حذف کنید یا از پکیج استفاده کنید.
  • فرمت‌بندی کد: Go دارای یک ابزار داخلی به نام gofmt برای قالب‌بندی کد است. اگر کد شما به درستی فرمت نشده باشد، ممکن است با هشدارهایی مواجه شوید. اغلب ویرایشگرهای کد این کار را به صورت خودکار انجام می‌دهند یا می‌توانید به صورت دستی go fmt . را در ریشه پروژه خود اجرا کنید.

۵. مشکلات مربوط به GOPATH و ساختار پروژه

مشکل: با وجود Go Modules، برخی توسعه‌دهندگان هنوز با مفاهیم GOPATH گیج می‌شوند، به خصوص اگر با کدهای قدیمی‌تر یا ابزارهای خاصی کار کنند.

راه‌حل:

  • تمرکز بر Go Modules: برای پروژه‌های جدید، کاملاً بر Go Modules تمرکز کنید و نیازی نیست پروژه خود را درون GOPATH/src قرار دهید.
  • go env GOPATH: همیشه می‌توانید مسیر GOPATH فعلی خود را با این دستور بررسی کنید.
  • ابزارهای نصب شده: اگر ابزارهای Go را با go install نصب می‌کنید، آن‌ها به صورت پیش‌فرض در $GOPATH/bin قرار می‌گیرند. مطمئن شوید که $GOPATH/bin در PATH سیستم شما قرار دارد تا بتوانید این ابزارها را از هر جایی اجرا کنید.

به یاد داشته باشید که مستندات رسمی Go (golang.org/doc) و جامعه کاربری Go (انجمن‌ها، Stack Overflow) منابع بسیار خوبی برای عیب‌یابی و حل مشکلات هستند. با کمی صبر و پیگیری، می‌توانید اکثر مشکلات را حل کنید و به سرعت با Go توسعه را شروع کنید.

“تسلط به برنامه‌نویسی پایتون با هوش مصنوعی: آموزش کدنویسی هوشمند با ChatGPT”

قیمت اصلی 2.290.000 ریال بود.قیمت فعلی 1.590.000 ریال است.

"تسلط به برنامه‌نویسی پایتون با هوش مصنوعی: آموزش کدنویسی هوشمند با ChatGPT"

"با شرکت در این دوره جامع و کاربردی، به راحتی مهارت‌های برنامه‌نویسی پایتون را از سطح مبتدی تا پیشرفته با کمک هوش مصنوعی ChatGPT بیاموزید. این دوره، با بیش از 6 ساعت محتوای آموزشی، شما را قادر می‌سازد تا به سرعت الگوریتم‌های پیچیده را درک کرده و اپلیکیشن‌های هوشمند ایجاد کنید. مناسب برای تمامی سطوح با زیرنویس فارسی حرفه‌ای و امکان دانلود و تماشای آنلاین."

ویژگی‌های کلیدی:

بدون نیاز به تجربه قبلی برنامه‌نویسی

زیرنویس فارسی با ترجمه حرفه‌ای

۳۰ ٪ تخفیف ویژه برای دانشجویان و دانش آموزان