آموزش زبان Go - بخش اول: مقدمه، نصب و Hello World

در این بخش با تاریخچه زبان گو، فلسفه طراحی، مزایای آن نسبت به سایر زبان‌ها آشنا می‌شوید و اولین برنامه Hello World خود را در محیط توسعه راه‌اندازی می‌کنید.

·۹ دقیقه برای خواندن·go
آموزش زبان Go - بخش اول: مقدمه، نصب و Hello World

مقدمه‌ای بر زبان Go (Golang)

به اولین بخش از مجموعه‌ی آموزشی زبان Go خوش آمدید. اگر به دنبال زبانی هستید که هم‌زمان ساده، کارآمد و قدرتمند باشد، جای درستی آمده‌اید. گو به مشکلاتی پاسخ داده که توسعه‌دهندگان نرم‌افزار در مقیاس بزرگ با آن دست‌و‌پنجه نرم می‌کنند: سرعت پایین کامپایل، مدیریت پیچیده‌ی هم‌روندی (Concurrency)، و خوانایی پایین کد در تیم‌های بزرگ.

تاریخچه‌ی مختصر

زبان Go در سال ۲۰۰۷ در شرکت Google طراحی شد و در سال ۲۰۰۹ به‌صورت متن‌باز (Open Source) منتشر گردید. سه نفر از بزرگان علوم کامپیوتر یعنی رابرت گریزمر (Robert Griesemer)، راب پایک (Rob Pike) و کن تامپسون (Ken Thompson) - که خود یکی از خالقان زبان C و سیستم‌عامل UNIX است - پشت طراحی این زبان هستند. دلیل اصلی ایجاد Go، نارضایتی از زبان‌های موجود (مانند ++C و Java) برای توسعه‌ی سرویس‌های بزرگ و مقیاس‌پذیر در گوگل بود. آن‌ها می‌خواستند زبانی بسازند که:

  • کامپایل شدنش از چند دقیقه به چند ثانیه برسد.
  • کدنویسی در آن لذت‌بخش و خوانا باشد.
  • به‌طور بومی از پردازنده‌های چند هسته‌ای پشتیبانی کند.

💎 چرا باید Go یاد بگیریم؟

شاید برایتان سوال باشد که چرا در بین انبوه زبان‌های برنامه‌نویسی، سراغ Go برویم؟ در ادامه به چند مورد از نقاط قوت بی‌نظیر آن اشاره می‌کنم:

۱. سرعت فوق‌العاده در کامپایل

برخلاف زبان‌های کامپایلری دیگر، گو کد را به‌صورت مستقیم به باینری ماشین تبدیل می‌کند و این کار را در کسری از ثانیه انجام می‌دهد. این ویژگی، چرخه‌ی توسعه (Development Loop) را به شدت کوتاه می‌کند.

۲. مدیریت حافظه‌ی خودکار (Garbage Collection)

دیگر خبری از مدیریت دستی حافظه (مانند C) نیست. زباله‌روب (GC) گو بهینه شده تا تاخیر (Latency) بسیار کمی داشته باشد و شما را از دغدغه‌ی تخصیص و آزادسازی حافظه نجات دهد.

۳. هم‌روندی درخشان با Goroutine و Channel

مهم‌ترین برگ برنده‌ی گو! شما می‌توانید هزاران تابع را به‌صورت هم‌زمان با کمترین مصرف حافظه (حدود ۲ کیلوبایت برای هر Goroutine) اجرا کنید. برخلاف Threadهای سنگین در جاوا یا پایتون، کار با Goroutine به سادگی اضافه کردن کلمه‌ی کلیدی go جلوی تابع است.

۴. سادگی و خوانایی بالا

گو کلمات کلیدی کمی دارد (تنها ۲۵ کلید واژه) و قواعد نحوی (Syntax) آن بسیار تمیز است. بسیاری از ویژگی‌های پیچیده‌ی زبان‌های شیءگرا مانند وراثت (Inheritance) در گو حذف شده و به جای آن از ترکیب (Composition) استفاده می‌شود که کد را بسیار شفاف‌تر می‌کند.

۵. ابزارهای قدرتمند توکار

گو همراه با یک سری ابزار خط فرمان عالی عرضه می‌شود:

  • go fmt: به‌طور خودکار فرمت استاندارد را روی کد اعمال می‌کند (دیگر بحث بر سر فاصله یا Tab وجود ندارد!).
  • go test: نوشتن تست‌های واحد (Unit Test) را بی‌نهایت ساده کرده است.
  • go mod: مدیریت وابستگی‌ها (Dependency Management) به‌سبک ماژولار.

🖥️ نصب و راه‌اندازی (Setup)

برای شروع کدنویسی، ابتدا نیاز داریم تا Go را روی سیستم خود نصب کنیم.

نصب روی ویندوز، مک و لینوکس

به سایت رسمی golang.org/dl بروید و آخرین نسخه‌ی پایدار را متناسب با سیستم‌عامل خود دانلود کنید.

  • ویندوز: فایل .msi را اجرا کنید و مانند نرم‌افزارهای عادی Next بزنید.
  • مک: از پکیج .pkg استفاده کنید یا اگر از Homebrew استفاده می‌کنید، دستور brew install go را اجرا نمایید.
  • لینوکس: از مدیر بسته‌ی توزیع خود استفاده کنید (مثلاً sudo apt install golang-go) یا فایل .tar.gz را در مسیر /usr/local استخراج کنید.

تنظیم متغیر محیطی (GOPATH)

در نسخه‌های جدید گو (از نسخه ۱.۱۱ به بعد) با فعال بودن Go Modules، دیگر نیازی به تنظیم دقیق GOPATH نیست. اما بهتر است با مفهوم آن آشنا باشید:

  • به‌طور پیش‌فرض، پروژه‌های شما در مسیر ~/go قرار می‌گیرند.
  • برای اطمینان از نصب، ترمینال خود را باز کنید و دستور زیر را وارد کنید:
go version

اگر خروجی مشابه go version go1.22.0 linux/amd64 را مشاهده کردید، یعنی نصب با موفقیت انجام شده است.

اولین برنامه: Hello, World!

طبق سنت دیرینه در دنیای برنامه‌نویسی، اولین برنامه‌مان را با چاپ یک پیام ساده شروع می‌کنیم. یک پوشه به نام hello-world ایجاد کنید و داخل آن یک فایل main.go بسازید. سپس کد زیر را در آن بنویسید:

package main

import "fmt"

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

اجرای برنامه

برای اجرای کد فوق، کافی است در ترمینال و در همان پوشه، دستور زیر را وارد کنید:

go run main.go

و خروجی باید به صورت زیر باشد

Hello World!

تبریک می‌گوییم! شما اولین برنامه‌ی خود را با زبان Go نوشتید و اجرا کردید. در همین چند خط کد، مفاهیم مهمی مانند package main (نقطه‌ی ورود برنامه)، import (وارد کردن کتابخانه‌ها) و توابع را مشاهده کردید که در بخش‌های آینده به‌تفصیل به آنها خواهیم پرداخت.

🗺️ در این دوره چه خواهیم آموخت؟ این مجموعه به‌گونه‌ای طراحی شده که شما را از یک مبتدی کامل به یک توسعه‌دهنده‌ی حرفه‌ای Go تبدیل کند. در بخش‌های بعدی سراغ مباحث زیر خواهیم رفت:

بخش دوم: متغیرها، داده‌های اولیه و ثابت‌ها

بخش سوم: ساختارهای شرطی و حلقه‌ها

بخش چهارم: آرایه‌ها، اسلایس‌ها و مپ‌ها

بخش پنجم: توابع، متدها و اینترفیس‌ها

بخش ششم: مدیریت خطاها (Error Handling)

بخش هفتم: هم‌روندی با Goroutine و Channel

بخش هشتم: ساخت وب‌سرویس با Gin/Echo

و بخش‌های پیشرفته‌تر: کار با دیتابیس، تست‌نویسی و ...

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