0Pricing
Go Academy · درس

وحدات Go باستخدام go mod

تهيئة الوحدات وملفي go.mod وgo.sum

وحدات Go باستخدام go mod درس مجاني في Go Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Go Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Go Academy 4 دروس في المجموع.

ما وحدة Go؟

الوحدة هي مجموعة من حزم Go تحتوي على ملف go.mod في جذرها. وتُعد الوحدات وحدة توزيع الشيفرة وإدارة إصداراتها في Go:

// go.mod — created with: go mod init github.com/myuser/myapp
module github.com/myuser/myapp

go 1.21

require (
    github.com/gin-gonic/gin v1.9.1
    golang.org/x/sync v0.5.0
)

go mod init

أنشئ وحدة جديدة باستخدام go mod init:

# In project directory:
go mod init github.com/myuser/myapp

# This creates go.mod:
# module github.com/myuser/myapp
# go 1.21

# The module path is the canonical import path prefix
# for all packages in this module

go.sum — التحقق من السلامة

يسجل go.sum المجاميع الاختبارية التشفيرية لجميع التبعيات. لا تعدّله يدويًا مطلقًا؛ فأوامر Go تتولى صيانته:

# go.sum example entries:
github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg=
github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU=

# Commit go.sum to version control — it ensures reproducible builds

go get — إضافة التبعيات

استخدم go get لإضافة التبعيات أو تحديثها. فهو يحدّث كلًا من go.mod وgo.sum:

# Add latest version
go get github.com/pkg/errors

# Add specific version
go get github.com/pkg/errors@v0.9.1

# Upgrade to latest patch release
go get -u=patch github.com/pkg/errors

# Remove unused dependency from go.mod
go mod tidy

go mod tidy

يضيف go mod tidy المتطلبات المفقودة ويزيل المتطلبات غير المستخدمة من go.mod وgo.sum. شغّله بعد تعديل الاستيرادات:

# After adding/removing imports:
go mod tidy

# What it does:
# 1. Adds any missing module requirements
# 2. Removes requirements for packages no longer imported
# 3. Updates go.sum with needed checksums
# 4. Best practice: run before committing

إدارة إصدارات الوحدات باستخدام Semver

تستخدم وحدات Go الإصدارات الدلالية. وتتطلب الإصدارات الرئيسية التي تساوي 2 أو أكثر لاحقةً في المسار:

// v1: github.com/pkg/errors
import "github.com/pkg/errors"

// v2+: module path includes major version
import "github.com/foo/bar/v2"
import "github.com/foo/bar/v3"

// go.mod:
// require github.com/foo/bar/v2 v2.3.1

go mod vendor

ينسخ وضع التوريد جميع التبعيات إلى دليل محلي vendor/ لإجراء عمليات البناء دون اتصال:

# Copy deps to vendor/
go mod vendor

# Build using vendor/
go build -mod=vendor ./...

# Useful for:
# - Air-gapped environments
# - Reproducible CI builds without network
# - Code review of dependencies

التوجيه replace

يستبدل التوجيه replace في go.mod وحدةً بمسار محلي أو بإصدار مختلف، وهو مفيد أثناء التطوير المحلي:

module github.com/myapp

go 1.21

require github.com/mylib v1.0.0

// Use local fork during development:
replace github.com/mylib => ../mylib

// Replace with a specific version:
// replace github.com/mylib v1.0.0 => github.com/myfork v1.0.0

go env GOPATH وGOMODCACHE

متغيرات البيئة الأساسية لوحدات Go:

# Module cache location (default: ~/go/pkg/mod)
go env GOMODCACHE

# Proxy for downloading modules (default: proxy.golang.org)
go env GOPROXY

# Sum database for checksum verification
go env GONOSUMCHECK

# Disable module proxy (use direct)
export GOPROXY=direct

go list وgo mod graph

افحص تبعيات الوحدة باستخدام هذين الأمرين:

# List all modules in the build
go list -m all

# Show module dependency graph
go mod graph

# Find which module provides a package
go list -m -json all | grep -A5 gin

# Check for available updates
go list -m -u all

تحقق سريع

ماذا يفعل go mod tidy؟

مراجعة: وحدات Go

المفاهيم الأساسية للوحدات:

  • ينشئ go mod init الوحدة مع ملف go.mod
  • يسرد go.mod اسم الوحدة وإصدار Go والتبعيات
  • يحتوي go.sum على المجاميع الاختبارية؛ لذا أدرجه في المستودع
  • يضيف go get التبعيات أو يحدّثها، بينما ينظف go mod tidy الملفات
  • استخدم replace للتفرعات المحلية أثناء التطوير
  • تتطلب الإصدارات الرئيسية v2 وما بعدها لاحقةً في المسار

الأسئلة الشائعة

هل درس «وحدات Go باستخدام go mod» مجاني؟

نعم — نص درس «وحدات Go باستخدام go mod» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Go Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Go Academy 4 دروس في المجموع.

ماذا ستتعلم في «وحدات Go باستخدام go mod»؟

تهيئة الوحدات وملفي go.mod وgo.sum تتمرن على Go Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Go Academy؟

لا تُشترط خبرة سابقة. Go Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «وحدات Go باستخدام go mod»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Go Academy هذا؟

نعم. كل درس في Go Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الحزم: تنظيم شيفرة Go
  2. وحدات Go باستخدام go mod
  3. إضافة التبعيات الخارجية
  4. الحزم الداخلية ومساحات العمل
← العودة إلى Go Academy