مكتبة Go القياسية (Golang): نظرة شاملة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مكتبة Go القياسية: أساس قوي لأي تطبيق



مكتبة Go القياسية (Golang) ليست مجرد مجموعة من الأدوات المساعدة. إنها نظام بيئي مصمم بعناية يغطي 80% من احتياجات المطور عند إنشاء تطبيقات الخادم والشبكة والتطبيقات الطرفية. على عكس العديد من اللغات حيث المكتبة القياسية هي مجرد حد أدنى أساسي، في Go تتضمن خادم HTTP كامل، عميل للعمل مع JSON، أدوات قوية للتوازي، وحتى ملف تعريف الأداء. فيما يلي تحليل مفصل للحزم الرئيسية.



1. الحزمة fmt و io: أساس الإدخال والإخراج

الحزمة fmt هي أول ما يصادفه المبتدئ. توفر دوال Printf و Sprintf و Scanf للإخراج والإدخال المنسق. لكن القوة الحقيقية تكمن في الحزمة io وواجهاتها Reader و Writer.

package main

import ( "fmt" "io" "strings")

func main() { // io.Reader — أي مصدر بيانات reader := strings.NewReader("مرحباً، Go!") data, _ := io.ReadAll(reader) fmt.Println(string(data)) // الإخراج: مرحباً، Go!}


2. الحزمة net/http: إنشاء خادم ويب في 5 أسطر

تشتهر Go بدعمها المدمج لـ HTTP. تسمح الحزمة net/http بتشغيل خادم ويب كامل دون تبعيات خارجية. إنها أداة مثالية للخدمات المصغرة وواجهات API.

package main

import ( "fmt" "net/http")

func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "مرحباً، %s!", r.URL.Path[1:])}

func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) // الخادم على المنفذ 8080}


3. الحزمة encoding/json: العمل مع JSON بدون ألم

تسلسل وإلغاء تسلسل البيانات مهمة شائعة. تستخدم الحزمة encoding/json وسوم الهياكل لتعيين الحقول بمرونة. إنها أسرع من العديد من المكتبات الخارجية لأنها تعمل على مستوى الانعكاس المحسّن لـ Go.

package main

import ( "encoding/json" "fmt")

type User struct { Name string `json:"name"` Age int `json:"age"`}

func main() { jsonStr := `{"name":"Alice","age":30}` var user User json.Unmarshal([]byte(jsonStr), &user) fmt.Printf("%+v", user) // الإخراج: {Name:Alice Age:30}}


4. الحزمة sync: أدوات للتوازي

تم إنشاء Go لتطبيقات تعدد المهام. توفر الحزمة sync Mutex و RWMutex و WaitGroup و Once. لكن الجوهرة الرئيسية هي sync.Map، وهي خريطة آمنة للخيوط محسّنة لسيناريوهات القراءة المتكررة.

package main

import ( "fmt" "sync")

func main() { var wg sync.WaitGroup for i := 0; i < 5; i++ { wg.Add(1) go func(n int) { defer wg.Done() fmt.Println("غوروتين:", n) }(i) } wg.Wait() // انتظار انتهاء جميع الغوروتينات}


5. الحزمة strings و strconv: العمل مع النص

تحتوي الحزمة strings على دوال للبحث والاستبدال والتقسيم ودمج السلاسل النصية. strconv مسؤولة عن تحويل السلاسل النصية إلى أرقام والعكس، بالإضافة إلى ترميز الأحرف. هذه الحزم مكتوبة بلغة التجميع وتعمل بأقصى أداء.

package main

import ( "fmt" "strings" "strconv")

func main() { // strings phrase := "hello world" fmt.Println(strings.ToUpper(phrase)) // HELLO WORLD

// strconv num, _ := strconv.Atoi("42") fmt.Println(num + 8) // 50}


6. الحزمة testing: اختبار مدمج

تتضمن Go إطار عمل قوي للاختبار

توصيات