وحدات 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 modulego.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 buildsgo 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 tidygo 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.1go 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.0go 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=directgo 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الحزم: تنظيم شيفرة Go
- وحدات Go باستخدام go mod
- إضافة التبعيات الخارجية
- الحزم الداخلية ومساحات العمل