الـ 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! أصبحت قادرًا على بناء خوادم سريعة ومتزامنة. اختبر نفسك واحصل على شهادتك.