وبلاگ
شروع کار با Go: نصب و اولین برنامه “Hello World”
فهرست مطالب
“تسلط به برنامهنویسی پایتون با هوش مصنوعی: آموزش کدنویسی هوشمند با ChatGPT”
"تسلط به برنامهنویسی پایتون با هوش مصنوعی: آموزش کدنویسی هوشمند با ChatGPT"
"با شرکت در این دوره جامع و کاربردی، به راحتی مهارتهای برنامهنویسی پایتون را از سطح مبتدی تا پیشرفته با کمک هوش مصنوعی ChatGPT بیاموزید. این دوره، با بیش از 6 ساعت محتوای آموزشی، شما را قادر میسازد تا به سرعت الگوریتمهای پیچیده را درک کرده و اپلیکیشنهای هوشمند ایجاد کنید. مناسب برای تمامی سطوح با زیرنویس فارسی حرفهای و امکان دانلود و تماشای آنلاین."
ویژگیهای کلیدی:
بدون نیاز به تجربه قبلی برنامهنویسی
زیرنویس فارسی با ترجمه حرفهای
۳۰ ٪ تخفیف ویژه برای دانشجویان و دانش آموزان
0 تا 100 عطرسازی + (30 فرمولاسیون اختصاصی حامی صنعت)
دوره آموزش Flutter و برنامه نویسی Dart [پروژه محور]
دوره جامع آموزش برنامهنویسی پایتون + هک اخلاقی [با همکاری شاهک]
دوره جامع آموزش فرمولاسیون لوازم آرایشی
دوره جامع علم داده، یادگیری ماشین، یادگیری عمیق و NLP
دوره فوق فشرده مکالمه زبان انگلیسی (ویژه بزرگسالان)
شمع سازی و عودسازی با محوریت رایحه درمانی
صابون سازی (دستساز و صنعتی)
صفر تا صد طراحی دارو
متخصص طب سنتی و گیاهان دارویی
متخصص کنترل کیفی شرکت دارویی
شروع کار با 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
- مرورگر وب خود را باز کرده و به وبسایت رسمی Go بروید: https://golang.org/dl/.
-
در این صفحه، نسخههای مختلف Go برای سیستمعاملهای گوناگون را مشاهده خواهید کرد. به دنبال بخش “Windows” بگردید و نسخه
MSI installer
را برای معماری سیستم خود (معمولاًx86-64
یاamd64
) دانلود کنید. فایل دانلود شده معمولاً چیزی شبیه بهgo1.x.x.windows-amd64.msi
خواهد بود.
گام ۲: اجرای نصبکننده Go
-
پس از اتمام دانلود، روی فایل
.msi
دانلود شده دوبار کلیک کنید تا نصبکننده Go اجرا شود. - پنجره “Welcome to the Go Programming Language Setup Wizard” ظاهر خواهد شد. روی “Next” کلیک کنید.
- در صفحه “End-User License Agreement”، توافقنامه لایسنس را مطالعه کرده و اگر موافقید، تیک “I accept the terms in the License Agreement” را بزنید و سپس روی “Next” کلیک کنید.
-
در صفحه “Destination Folder”، میتوانید مسیر نصب Go را مشخص کنید. مسیر پیشفرض معمولاً
C:\Program Files\Go\
است که توصیه میشود آن را تغییر ندهید، مگر اینکه دلیل خاصی برای این کار داشته باشید. روی “Next” کلیک کنید. - در صفحه “Ready to install Go Programming Language”، روی “Install” کلیک کنید تا فرآیند نصب آغاز شود. ممکن است User Account Control (UAC) ویندوز از شما اجازه بخواهد؛ در این صورت، روی “Yes” کلیک کنید.
- صبر کنید تا فرآیند نصب تکمیل شود. پس از اتمام، روی “Finish” کلیک کنید تا ویزارد نصب بسته شود.
گام ۳: تأیید نصب Go و بررسی متغیر PATH
نصبکننده MSI به صورت خودکار متغیر محیطی PATH
را برای شما تنظیم میکند، اما مهم است که صحت نصب را تأیید کنید.
-
باز کردن Command Prompt یا PowerShell:
- در نوار جستجوی ویندوز،
cmd
را تایپ کرده و Enter بزنید تا Command Prompt باز شود. - یا
powershell
را تایپ کرده و Enter بزنید تا PowerShell باز شود.
نکته مهم: اگر قبل از نصب Go، Command Prompt یا PowerShell را باز کرده بودید، پس از نصب باید آن را بسته و دوباره باز کنید تا تغییرات متغیر
PATH
اعمال شوند. - در نوار جستجوی ویندوز،
-
بررسی نسخه Go:
در خط فرمان، دستور زیر را تایپ کرده و Enter بزنید:
go version
اگر نصب موفقیتآمیز بوده باشد، خروجی مشابه زیر را مشاهده خواهید کرد که نشاندهنده نسخه Go نصب شده است:
go version go1.x.x windows/amd64
-
بررسی متغیرهای محیطی 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
است. در این صورت، باید آن را به صورت دستی تنظیم کنید:
-
باز کردن تنظیمات متغیرهای محیطی:
- در نوار جستجوی ویندوز،
environment variables
را تایپ کنید و سپس روی “Edit the system environment variables” کلیک کنید. - در پنجره “System Properties”، روی دکمه “Environment Variables…” کلیک کنید.
- در نوار جستجوی ویندوز،
-
ویرایش متغیر
PATH
:- در بخش “System variables” (متغیرهای سیستمی) یا “User variables for [Your Username]” (متغیرهای کاربری)، متغیر “Path” را پیدا کرده و آن را انتخاب کنید. سپس روی “Edit…” کلیک کنید.
- در پنجره “Edit environment variable”، روی “New” کلیک کنید و مسیر پوشه
bin
در محل نصب Go را اضافه کنید. این مسیر معمولاًC:\Program Files\Go\bin
است. - روی “OK” کلیک کنید تا همه پنجرهها بسته شوند.
-
راهاندازی مجدد خط فرمان: Command Prompt یا PowerShell را بسته و دوباره باز کنید و سپس دوباره
go version
را امتحان کنید. باید اکنون کار کند.
با اتمام این مراحل، Go به درستی بر روی سیستم ویندوز شما نصب شده و آماده استفاده است.
راهنمای گام به گام نصب Go در لینوکس (بروزرسانی از طریق پکیج منیجر و دستی)
نصب Go در لینوکس را میتوان به دو روش اصلی انجام داد: استفاده از پکیج منیجر سیستم (مانند apt
یا dnf
) یا نصب دستی از فایلهای تاربال. روش دستی معمولاً توصیه میشود، زیرا تضمین میکند که آخرین نسخه پایدار Go را نصب میکنید، در حالی که نسخههای موجود در مخازن پکیج منیجرها ممکن است قدیمیتر باشند.
روش ۱: نصب Go با استفاده از پکیج منیجر (توصیه نمیشود مگر برای تست سریع)
این روش سریع و آسان است، اما همانطور که ذکر شد، ممکن است نسخه قدیمیتری از Go را نصب کند.
برای سیستمهای مبتنی بر Debian/Ubuntu:
- ترمینال را باز کنید.
-
بستههای سیستم را بروزرسانی کنید:
sudo apt update
-
Go را نصب کنید:
sudo apt install golang-go
-
پس از اتمام نصب، میتوانید با دستور
go version
نصب را تأیید کنید.
برای سیستمهای مبتنی بر Fedora/RHEL/CentOS:
- ترمینال را باز کنید.
-
Go را نصب کنید:
sudo dnf install golang
یا برای CentOS/RHEL قدیمیتر:
sudo yum install golang
-
پس از اتمام نصب، میتوانید با دستور
go version
نصب را تأیید کنید.
روش ۲: نصب دستی Go (توصیه شده برای آخرین نسخه)
این روش به شما کنترل بیشتری بر روی نسخه Go و محل نصب میدهد. توصیه میشود Go را در مسیر /usr/local
نصب کنید.
گام ۱: دانلود فایل تاربال Go
- مرورگر وب خود را باز کرده و به وبسایت رسمی Go بروید: https://golang.org/dl/.
-
در بخش “Linux”، نسخه
tar.gz
را برای معماری سیستم خود (معمولاًx86-64
یاamd64
) دانلود کنید. فایل دانلود شده شبیهgo1.x.x.linux-amd64.tar.gz
خواهد بود. -
میتوانید این کار را از طریق خط فرمان نیز انجام دهید. برای مثال، برای دانلود آخرین نسخه (مثلاً 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
برای تنظیمات سراسری که برای همه نشستهای ورود به سیستم اعمال میشوند، مناسبتر است.
-
فایل پروفایل خود را با یک ویرایشگر متنی باز کنید. مثلاً برای
.bashrc
:nano ~/.bashrc
یا برای
.profile
(اگر از Bash یا Zsh استفاده میکنید):nano ~/.profile
-
خطوط زیر را در انتهای فایل اضافه کنید:
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 را از هر دایرکتوری اجرا کند.
- فایل را ذخیره کرده و ببندید (در nano، با Ctrl+X، سپس Y و Enter).
-
اعمال تغییرات: برای اینکه تغییرات اعمال شوند، باید ترمینال خود را بسته و دوباره باز کنید، یا دستور
source
را برای فایل پروفایل خود اجرا کنید:source ~/.bashrc
یا
source ~/.profile
گام ۵: تأیید نصب Go
پس از تنظیم متغیرهای محیطی، میتوانید با دستورات زیر از صحت نصب Go اطمینان حاصل کنید:
-
بررسی نسخه Go:
go version
خروجی باید مشابه زیر باشد:
go version go1.x.x linux/amd64
-
بررسی متغیرهای محیطی 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 (اگر قبلاً نصب نشده است)
- ترمینال (Terminal.app) را از Applications/Utilities باز کنید.
-
دستور زیر را در ترمینال کپی و اجرا کنید. این دستور Homebrew را نصب میکند:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- دستورالعملهای روی صفحه را دنبال کنید، ممکن است از شما رمز عبور سیستم خواسته شود.
-
پس از اتمام نصب، برای اطمینان از صحت نصب، دستور
brew doctor
را اجرا کنید. اگر مشکلی وجود نداشت، پیغام “Your system is ready to brew.” را مشاهده خواهید کرد.
گام ۱.۲: نصب Go با Homebrew
-
پس از نصب Homebrew، به راحتی میتوانید Go را نصب کنید:
brew install go
Homebrew به صورت خودکار آخرین نسخه پایدار Go را دانلود و نصب میکند و متغیرهای محیطی لازم را تنظیم میکند.
-
پس از اتمام نصب، برای تأیید نصب 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
- مرورگر وب خود را باز کرده و به وبسایت رسمی Go بروید: https://golang.org/dl/.
-
در بخش “macOS”، نسخه
tar.gz
را برای معماری سیستم خود (x86-64
برای مکهای اینتل یاARM64
برای مکهای M1/M2/M3) دانلود کنید. فایل دانلود شده شبیهgo1.x.x.darwin-amd64.tar.gz
یاgo1.x.x.darwin-arm64.tar.gz
خواهد بود. -
میتوانید این کار را از طریق ترمینال نیز انجام دهید. برای مثال، برای دانلود آخرین نسخه (همیشه 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
مناسب است.
-
فایل پروفایل خود را با یک ویرایشگر متنی باز کنید. مثلاً برای
.zshrc
:nano ~/.zshrc
یا برای
.bash_profile
:nano ~/.bash_profile
-
خطوط زیر را در انتهای فایل اضافه کنید:
export GOROOT=/usr/local/go export PATH=$PATH:$GOROOT/bin
توضیح: مشابه نصب در لینوکس است.
GOROOT
به Go میگوید کجا نصب شده وPATH
به سیستمعامل میگوید که کجا فایلهای اجرایی Go را پیدا کند. - فایل را ذخیره کرده و ببندید.
-
اعمال تغییرات: برای اینکه تغییرات اعمال شوند، باید ترمینال خود را بسته و دوباره باز کنید، یا دستور
source
را برای فایل پروفایل خود اجرا کنید:source ~/.zshrc
یا
source ~/.bash_profile
گام ۲.۵: تأیید نصب Go
پس از تنظیم متغیرهای محیطی، میتوانید با دستورات زیر از صحت نصب Go اطمینان حاصل کنید:
-
بررسی نسخه Go:
go version
خروجی باید مشابه
go version go1.x.x darwin/amd64
یاgo version go1.x.x darwin/arm64
باشد. -
بررسی متغیرهای محیطی 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 در سیستم هدف، اجرا شود. این روش برای توزیع برنامههای شما ایدهآل است.
-
کامپایل برنامه:
در دایرکتوری
hello-go
در خط فرمان خود، دستور زیر را اجرا کنید:go build main.go
این دستور یک فایل اجرایی در همان دایرکتوری
hello-go
ایجاد میکند. نام فایل اجرایی معمولاً همان نام دایرکتوری یا نام فایل منبع (بدون پسوند.go
) خواهد بود، یعنیhello-go
در لینوکس/macOS وhello-go.exe
در ویندوز. -
اجرای فایل اجرایی:
اکنون میتوانید فایل اجرایی را مستقیماً اجرا کنید:
در ویندوز:
.\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): به شما امکان میدهد با کلیک بر روی یک نام (مثل تابع یا متغیر)، به تعریف آن در کد منبع بروید.
نحوه راهاندازی:
- VS Code را نصب کنید (اگر هنوز نصب نکردهاید).
- VS Code را باز کنید و به بخش Extensions (نماد مربعها در نوار کناری) بروید.
- “Go” را جستجو کنید و افزونه “Go” توسط “Go Team at Google” را نصب کنید.
- پس از نصب، 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”
"تسلط به برنامهنویسی پایتون با هوش مصنوعی: آموزش کدنویسی هوشمند با ChatGPT"
"با شرکت در این دوره جامع و کاربردی، به راحتی مهارتهای برنامهنویسی پایتون را از سطح مبتدی تا پیشرفته با کمک هوش مصنوعی ChatGPT بیاموزید. این دوره، با بیش از 6 ساعت محتوای آموزشی، شما را قادر میسازد تا به سرعت الگوریتمهای پیچیده را درک کرده و اپلیکیشنهای هوشمند ایجاد کنید. مناسب برای تمامی سطوح با زیرنویس فارسی حرفهای و امکان دانلود و تماشای آنلاین."
ویژگیهای کلیدی:
بدون نیاز به تجربه قبلی برنامهنویسی
زیرنویس فارسی با ترجمه حرفهای
۳۰ ٪ تخفیف ویژه برای دانشجویان و دانش آموزان