GoCasts آموزش Go به زبان ساده

بیش از ۱۰۰۰ شرکت‌کننده یادگیری Go و Backend رو از امروز شروع کن
ثبت‌نام دوره + تیم‌سازی

گولنگ چیست؟ آشنایی با زبان Go و دلایل یادگیری آن

اگر به دنبال یادگیری یک زبان برنامه‌نویسی مدرن، سریع و کاربردی هستید، احتمالاً نام Go یا Golang را شنیده‌اید. در این مقاله به صورت جامع بررسی می‌کنیم که زبان Go چیست، چه ویژگی‌هایی دارد و چرا یادگیری آن می‌تواند مسیر شغلی شما را متحول کند.

Go چیست؟

Go یا Golang یک زبان برنامه‌نویسی متن‌باز است که در سال ۲۰۰۹ توسط گوگل معرفی شد. این زبان توسط سه مهندس افسانه‌ای علوم کامپیوتر طراحی شده است:

  • Robert Griesemer - از طراحان V8 JavaScript Engine
  • Rob Pike - از خالقان سیستم‌عامل Plan 9 و UTF-8
  • Ken Thompson - خالق یونیکس و زبان C

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

  1. سریع کامپایل شود - زمان کامپایل کوتاه
  2. ساده باشد - یادگیری و خواندن آسان
  3. همزمانی داشته باشد - پشتیبانی داخلی از برنامه‌نویسی همزمان
  4. کارآمد باشد - عملکرد نزدیک به C

اولین برنامه Go

بیایید با یک مثال ساده شروع کنیم:

package main

import "fmt"

func main() {
    fmt.Println("سلام دنیا!")
    fmt.Println("Hello, World!")
}

این برنامه ساده چند نکته مهم را نشان می‌دهد:

  • هر برنامه Go با package main شروع می‌شود
  • تابع main() نقطه شروع اجرای برنامه است
  • پکیج fmt برای چاپ خروجی استفاده می‌شود

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

۱. سادگی و خوانایی

Go عمداً ساده طراحی شده است. تعداد کلمات کلیدی آن فقط ۲۵ عدد است (در مقایسه با C++ که بیش از ۸۰ کلمه کلیدی دارد). این سادگی باعث می‌شود:

  • کد خواناتر باشد
  • یادگیری سریع‌تر انجام شود
  • نگهداری کد آسان‌تر باشد
// تعریف یک struct ساده
type User struct {
    Name  string
    Email string
    Age   int
}

// ایجاد یک کاربر جدید
func NewUser(name, email string, age int) User {
    return User{
        Name:  name,
        Email: email,
        Age:   age,
    }
}

۲. همزمانی داخلی (Goroutines)

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

package main

import (
    "fmt"
    "time"
)

func sayHello(name string) {
    for i := 0; i < 3; i++ {
        fmt.Printf("سلام %s!\n", name)
        time.Sleep(100 * time.Millisecond)
    }
}

func main() {
    // اجرای همزمان دو تابع
    go sayHello("علی")
    go sayHello("رضا")

    // صبر برای اتمام
    time.Sleep(time.Second)
}

برخلاف Thread‌های سنگین در زبان‌های دیگر، Goroutine‌ها بسیار سبک هستند و می‌توانید میلیون‌ها Goroutine را همزمان اجرا کنید.

۳. سرعت کامپایل و اجرا

Go به کد ماشین کامپایل می‌شود (نه bytecode)، بنابراین:

  • سرعت اجرا بسیار بالاست
  • یک فایل اجرایی مستقل تولید می‌شود
  • نیازی به نصب runtime نیست
# کامپایل و اجرا
go build main.go
./main

# یا مستقیم اجرا
go run main.go

۴. مدیریت خودکار حافظه

Go دارای Garbage Collector است که مدیریت حافظه را خودکار انجام می‌دهد. این یعنی نیازی به malloc و free مانند C نیست:

func createUsers() []User {
    users := make([]User, 0, 100)

    for i := 0; i < 100; i++ {
        // حافظه به صورت خودکار تخصیص و آزاد می‌شود
        users = append(users, User{
            Name: fmt.Sprintf("User%d", i),
        })
    }

    return users
}

۵. کتابخانه استاندارد قوی

Go دارای یک کتابخانه استاندارد غنی است که شامل:

  • net/http - ساخت وب سرور
  • encoding/json - کار با JSON
  • database/sql - اتصال به دیتابیس
  • testing - تست نویسی
  • crypto - رمزنگاری
package main

import (
    "encoding/json"
    "fmt"
    "net/http"
)

type Response struct {
    Message string `json:"message"`
    Status  int    `json:"status"`
}

func handler(w http.ResponseWriter, r *http.Request) {
    resp := Response{
        Message: "سلام از سرور Go!",
        Status:  200,
    }

    w.Header().Set("Content-Type", "application/json")
    json.NewEncoder(w).Encode(resp)
}

func main() {
    http.HandleFunc("/", handler)
    fmt.Println("Server running on :8080")
    http.ListenAndServe(":8080", nil)
}

چرا شرکت‌های بزرگ از Go استفاده می‌کنند؟

گوگل

  • Kubernetes
  • Docker (بخش‌هایی از آن)
  • سیستم‌های داخلی

اوبر

  • سرویس‌های میکروسرویس
  • سیستم‌های real-time
  • پردازش میلیون‌ها درخواست در ثانیه

دراپ‌باکس

  • مهاجرت از Python به Go
  • کاهش ۷۰٪ مصرف CPU

کلودفلر

  • سرویس‌های edge
  • پروکسی‌های پرسرعت

توییچ

  • سیستم چت
  • پردازش ویدیو

Go برای چه کارهایی مناسب است؟

کاربرد مناسب؟ توضیح
وب سرویس و API بسیار مناسب کتابخانه استاندارد قوی
میکروسرویس بسیار مناسب سبک و سریع
DevOps و CLI بسیار مناسب Docker, Kubernetes, Terraform
سیستم‌های توزیع‌شده بسیار مناسب همزمانی داخلی
برنامه‌های موبایل نامناسب Swift/Kotlin بهتر است
هوش مصنوعی متوسط Python اکوسیستم بهتری دارد
بازی‌سازی نامناسب C++/Unity بهتر است

مقایسه سریع Go با زبان‌های دیگر

ویژگی Go Python Java C++
سرعت یادگیری سریع بسیار سریع متوسط کند
سرعت اجرا بالا پایین متوسط بسیار بالا
همزمانی عالی ضعیف خوب پیچیده
مدیریت حافظه خودکار خودکار خودکار دستی
اندازه باینری کوچک - بزرگ کوچک

برای مقایسه کامل‌تر، مقاله Go در مقابل Python را مطالعه کنید.

شروع یادگیری Go

اگر تصمیم گرفتید Go را یاد بگیرید، این مسیر را پیشنهاد می‌کنیم:

  1. نصب Go - راهنمای نصب Go
  2. نقشه راه - نقشه راه یادگیری گولنگ
  3. انواع داده - انواع داده در Go
  4. توابع - توابع در Go
  5. همزمانی - Goroutine چیست

جمع‌بندی

زبان Go یک انتخاب عالی برای توسعه‌دهندگانی است که می‌خواهند:

  • برنامه‌های سریع و کارآمد بنویسند
  • با همزمانی به راحتی کار کنند
  • کد خوانا و قابل نگهداری داشته باشند
  • در شرکت‌های بزرگ فناوری استخدام شوند

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

منابع

بیش از ۱۰۰۰ شرکت‌کننده یادگیری Go و Backend رو از امروز شروع کن
ثبت‌نام دوره + تیم‌سازی