0Pricing
Go Academy · Lezione

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 module

go.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 builds

go 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 tidy

go 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 committing

Versionamento 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.1

go 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 dependencies

Direttiva 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.0

go 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=direct

go 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 all

Verifica rapida

Che cosa fa go mod tidy?

Riepilogo: moduli Go

Concetti chiave sui moduli:

  • go mod init crea il modulo con un file go.mod
  • go.mod elenca il nome del modulo, la versione di Go e le dipendenze
  • go.sum contiene i checksum: esegui il commit del file
  • go get aggiunge o aggiorna le dipendenze, mentre go mod tidy esegue la pulizia
  • replace serve 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

  1. Package: organizzare il codice Go
  2. Moduli Go con go mod
  3. Aggiungere dipendenze esterne
  4. Package interni e workspace
← Torna a Go Academy