تخطي إلى المحتوى

لا يمكن تحويل هذا النوع من الملفات في المتصفح.

┐─ تحليل الملف ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
المطور : جوجل
الفئة : شفرة
نوع MIME : text/x-go
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

ما هو ملف Go؟

ملفات .go تحتوي على شفرة مصدرية بلغة Go (المعروفة أيضاً بـ Golang)، صُممت في جوجل بقيادة Robert Griesemer وRob Pike وKen Thompson وأُطلقت عام 2009. ولدت Go من إحباط مطوري جوجل من تعقيد C++ وبطء التجميع وصعوبات التزامن.

Go تجمع بين: سرعة ترجمة C، وبساطة Python، وتزامن مدمج (Goroutines تشبه Threads لكن أخف وزناً)، وإدارة ذاكرة تلقائية (Garbage Collection). تُنتج ملفات ثنائية مستقلة بدون تبعيات خارجية — ملف واحد يعمل على أي خادم Linux بدون تثبيت.

Docker وKubernetes وTerraform جميعها مكتوبة بـ Go.

كيفية فتح ملفات Go

  • VS Code مع إضافة Go (ويندوز، ماك، لينكس) — LSP كامل مع gopls
  • GoLand (ويندوز، ماك، لينكس) — IDE Go المتخصص من JetBrains
  • Neovim / Vim مع gopls — للمطورين المتقدمين
  • أي محرر نصوص — ملفات Go نص عادي
  • go run في الطرفية — تشغيل مباشر دون ترجمة مسبقة

المواصفات التقنية

الخاصيةالقيمة
نظام الأنواعثابت، قوي، مع استنتاج
النموذجإجرائي + كائني (بدون وراثة) + متزامن
المترجمgc (الرسمي)، gccgo
إدارة الذاكرةGarbage Collector تلقائي
التزامنGoroutines + Channels (CSP)
مدير الحزمGo Modules (go.mod / go.sum)
الإخراجملف ثنائي مستقل بدون تبعيات

الاستخدامات الشائعة

  • البنية التحتية والسحابة: Docker وKubernetes وTerraform وPrometheus كلها بـ Go
  • الخدمات الصغيرة (Microservices): سرعة التشغيل وانخفاض استهلاك الذاكرة يجعل Go مثالياً
  • أدوات CLI: kubectl وGitHub CLI وHugo جميعها مكتوبة بـ Go
  • خوادم APIs عالية الأداء: Go تتعامل مع آلاف الطلبات المتزامنة بكفاءة
  • DevOps وخطوط الأنابيب: Concourse CI وTekton مبنيان على Go

مثال برنامج Go

package main

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

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

func handler(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    json.NewEncoder(w).Encode(Response{
        Message: "مرحبا بالعالم!",
        Status:  200,
    })
}

func main() {
    http.HandleFunc("/", handler)
    fmt.Println("الخادم يعمل على http://localhost:8080")
    http.ListenAndServe(":8080", nil)
}

أوامر Go الأساسية

# تهيئة مشروع جديد
go mod init github.com/user/project

# تشغيل مباشر
go run main.go

# ترجمة وبناء ملف ثنائي
go build -o myapp ./...

# تشغيل الاختبارات
go test ./...

# تثبيت تبعية
go get github.com/gin-gonic/gin