Modules Go avec go mod
Initialiser des modules, go.mod et go.sum
Modules Go avec go mod est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Go Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Go Academy comprend 4 leçons au total.
Qu’est-ce qu’un module Go ?
Un module est un ensemble de paquets Go contenant un fichier go.mod à sa racine. Dans Go, les modules constituent l’unité de distribution et de gestion des versions du code :
// 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
Initialisez un nouveau module avec 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 — Vérification de l’intégrité
go.sum enregistre les sommes de contrôle cryptographiques de toutes les dépendances. Ne le modifiez jamais manuellement : les commandes Go le gèrent :
# 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 — Ajouter des dépendances
Utilisez go get pour ajouter ou mettre à jour des dépendances. Cette commande met à jour go.mod et 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 ajoute les exigences manquantes et supprime les exigences inutilisées de go.mod et go.sum. Exécutez cette commande après avoir modifié les importations :
# 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 committingGestion des versions de module avec Semver
Les modules Go utilisent le versionnement sémantique. Les versions majeures >= 2 nécessitent un suffixe de chemin :
// 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
Le mode fournisseur copie toutes les dépendances dans un répertoire local vendor/ pour permettre les compilations hors ligne :
# 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 dependenciesDirective replace
La directive replace dans go.mod remplace un module par un chemin local ou une autre version — ce qui est utile pour le développement local :
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 et GOMODCACHE
Principales variables d’environnement pour les modules 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 et go mod graph
Examinez les dépendances des modules avec ces commandes :
# 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 allVérification rapide
Que fait go mod tidy ?
Récapitulatif : modules Go
Concepts essentiels concernant les modules :
go mod initcrée le module avec un fichiergo.modgo.modrépertorie le nom du module, la version de Go et les dépendancesgo.sumcontient les sommes de contrôle : validez-le dans le dépôtgo getajoute ou met à jour les dépendances, etgo mod tidynettoie le fichierreplacepermet d’utiliser des versions dérivées pour le développement local- Les versions majeures v2 et ultérieures nécessitent un suffixe de chemin
Questions Fréquemment Posées
La leçon « Modules Go avec go mod » est-elle gratuite ?
Oui — le texte complet de « Modules Go avec go mod » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Go Academy, passe à CoddyKit PRO. Le cours Go Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Modules Go avec go mod » ?
Initialiser des modules, go.mod et go.sum Tu pratiques Go Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Go Academy ?
Aucune expérience préalable n'est requise. Go Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Modules Go avec go mod » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Go Academy ?
Oui. Chaque leçon Go Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Packages : organiser le code Go
- Modules Go avec go mod
- Ajouter des dépendances externes
- Packages internes et espaces de travail