Moduli Go con go mod
Inizializzare i moduli, go.mod e go.sum
Moduli Go con go mod è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Go Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Go Academy include 4 lezioni in totale.
Che cos'è un modulo Go?
Un modulo è una raccolta di pacchetti Go con un file go.mod nella directory radice. In Go, i moduli sono l'unità di distribuzione e versionamento del codice:
// 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
Inizializza un nuovo modulo con 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 — Verifica dell'integrità
go.sum registra i checksum crittografici di tutte le dipendenze. Non modificarlo mai manualmente: sono i comandi Go a gestirlo:
# 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 — Aggiungere dipendenze
Usa go get per aggiungere o aggiornare le dipendenze. Il comando aggiorna sia go.mod sia 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 aggiunge i requisiti mancanti e rimuove quelli inutilizzati da go.mod e go.sum. Eseguilo dopo aver modificato gli import:
# 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 committingVersionamento dei moduli con Semver
I moduli Go usano il versionamento semantico. Le versioni principali >= 2 richiedono un suffisso nel percorso:
// 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
La modalità vendor copia tutte le dipendenze in una directory locale vendor/ per le build offline:
# 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 dependenciesDirettiva replace
La direttiva replace in go.mod sostituisce un modulo con un percorso locale o con una versione diversa; è utile durante lo sviluppo locale:
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 e GOMODCACHE
Variabili d'ambiente chiave per i moduli 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 e go mod graph
Esamina le dipendenze dei moduli con questi comandi:
# 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 allVerifica rapida
Che cosa fa go mod tidy?
Riepilogo: moduli Go
Concetti chiave sui moduli:
go mod initcrea il modulo con un filego.modgo.modelenca il nome del modulo, la versione di Go e le dipendenzego.sumcontiene i checksum: esegui il commit del filego getaggiunge o aggiorna le dipendenze, mentrego mod tidyesegue la puliziareplaceserve per i fork locali durante lo sviluppo- Le versioni principali v2+ richiedono un suffisso nel percorso
Domande Frequenti
La lezione «Moduli Go con go mod» è gratuita?
Sì — il testo completo di «Moduli Go con go mod» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Go Academy, passa a CoddyKit PRO. Il corso Go Academy include 4 lezioni in totale.
Cosa imparerò in «Moduli Go con go mod»?
Inizializzare i moduli, go.mod e go.sum Eserciti Go Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Go Academy?
Non è richiesta alcuna esperienza precedente. Go Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Moduli Go con go mod»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Go Academy?
Sì. Ogni lezione Go Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Package: organizzare il codice Go
- Moduli Go con go mod
- Aggiungere dipendenze esterne
- Package interni e workspace