The Code Fix

🐹 شرح Go

الـ Structs والتزامن (Goroutines)

الـ Structs

Go ليست كائنية بالكامل، لكنها تستخدم structs لتجميع البيانات:

type Person struct {
    Name string
    Age  int
}

func main() {
    p := Person{Name: "براء", Age: 25}
    fmt.Println(p.Name)   // براء
}

دوال مرتبطة (Methods)

func (p Person) Greet() string {
    return "أهلًا " + p.Name
}

p := Person{Name: "سارة", Age: 22}
fmt.Println(p.Greet())

التزامن — Goroutines

أبرز ما يميّز Go: تشغيل دوال بالتوازي بسهولة بكلمة go:

func task(name string) {
    fmt.Println("تشغيل:", name)
}

func main() {
    go task("مهمة 1")   // تعمل بالتوازي
    go task("مهمة 2")
    time.Sleep(time.Second) // ننتظر اكتمالها
}

القنوات (Channels)

للتواصل بين الـ goroutines بأمان:

ch := make(chan string)

go func() {
    ch <- "تم الانتهاء"   // إرسال
}()

msg := <-ch   // استقبال
fmt.Println(msg)

💡 شعار Go في التزامن: "لا تتشارك الذاكرة للتواصل، بل تواصل لمشاركة الذاكرة" عبر القنوات.

🎉 أكملت أساسيات Go! أصبحت قادرًا على بناء خوادم سريعة ومتزامنة. اختبر نفسك واحصل على شهادتك.