مكتبة Go القياسية (Golang): نظرة شاملة
Go (أو Golang) هي لغة برمجة حديثة ومترجمة من Google، صُممت للبساطة والأداء والموثوقية. أحد الأسباب الرئيسية لشعبيتها هو مكتبتها القياسية القوية والموثقة جيدًا. على عكس العديد من اللغات الأخرى، تأتي Go مع مجموعة غنية من الحزم "جاهزة للاستخدام" تغطي جميع المهام الأساسية تقريبًا: من العمل مع النصوص إلى بناء خدمات ويب عالية التحميل. في هذه النظرة الشاملة، سنستعرض بالتفصيل الحزم الرئيسية لمكتبة Go القياسية مع أمثلة على الكود.
الحزمة fmt: الإدخال/الإخراج المنسق
هذه هي أول حزمة يتعرف عليها كل مطور Go. توفر دوال للإخراج المنسق إلى وحدة التحكم وقراءة البيانات.
package main
import "fmt"
func main() { name := "Go" version := 1.22 // إخراج منسق fmt.Printf("اللغة: %s، الإصدار: %.1f", name, version)
// تجميع سلسلة نصية بدون إخراج message := fmt.Sprintf("مرحبًا، %s!", name) fmt.Println(message)}الحزم strings و strconv: العمل مع السلاسل النصية
تحتوي الحزمة strings على دوال للبحث والاستبدال والتقسيم والدمج للسلاسل النصية. strconv مسؤولة عن تحويل السلاسل النصية إلى أرقام والعكس.
import ( "fmt" "strconv" "strings")
func main() { s := "مرحبًا، أيها العالم!" // البحث عن سلسلة فرعية if strings.Contains(s, "العالم") { fmt.Println("تم العثور") } // تقسيم السلسلة النصية parts := strings.Split(s, "، ") fmt.Println(parts[0]) // مرحبًا
// تحويل سلسلة نصية إلى رقم num, _ := strconv.Atoi("42") fmt.Println(num + 8) // 50}الحزمة net/http: إنشاء خوادم وعملاء HTTP
واحدة من أقوى الحزم. تتيح تشغيل خادم HTTP كامل ببضعة أسطر من الكود. تُستخدم على نطاق واسع في الخدمات المصغرة وتطبيقات الويب.
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)}الحزمة encoding/json: العمل مع JSON
تتبادل التطبيقات الحديثة البيانات باستمرار بتنسيق JSON. تسمح الحزمة encoding/json بسهولة تسلسل وإلغاء تسلسل هياكل Go إلى JSON والعكس.
import ( "encoding/json" "fmt")
type User struct { Name string `json:"name"` Age int `json:"age"`}
func main() { user := User{Name: "أليكسي", Age: 30} // التسلسل إلى JSON jsonData, _ := json.Marshal(user) fmt.Println(string(jsonData)) // {"name":"أليكسي","age":30}
// إلغاء التسلسل من JSON var decoded User json.Unmarshal(jsonData, &decoded) fmt.Println(decoded.Name) // أليكسي}الحزم io و os: العمل مع الملفات والتدفقات
توفر الحزمة os دوال للعمل مع نظام التشغيل: قراءة وكتابة الملفات، العمل مع متغيرات البيئة ووسائط سطر الأوامر. تحتوي io على واجهات للعمل مع تدفقات البيانات (قراءة/كتابة).
import ( "io/ioutil" "os")
func main() { // الكتابة إلى ملف data := []byte("Hello, Go!") ioutil.WriteFile("example.txt", data, 0644)
// القراءة من ملف content, _ := ioutil.ReadFile("example.txt") os.Stdout.Write(content)}الحزمة sync و goroutines: التزامن
تشتهر Go بدعمها المدمج للتزامن من خلال goroutines (خيوط خفيفة) والقنوات. توفر الحزمة sync بدائل التزامن مثل الميوتكس