0Pricing
Go Academy · Lezione

Aggiungere dipendenze esterne

go get, versionamento e cache dei moduli

Aggiungere dipendenze esterne è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 3 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.

Trovare pacchetti

La risorsa principale per trovare pacchetti Go è pkg.go.dev. Cerca pacchetti, leggi la documentazione e consulta gli esempi di utilizzo:

# Search and explore at https://pkg.go.dev

# Popular packages:
# github.com/gin-gonic/gin        — HTTP framework
# github.com/stretchr/testify     — test assertions
# golang.org/x/sync               — extended sync primitives
# github.com/spf13/cobra          — CLI framework
# github.com/jackc/pgx/v5         — PostgreSQL driver

go get: aggiungere una dipendenza

Usa go get per aggiungere una dipendenza. Il comando scarica il modulo e aggiorna go.mod e go.sum:

# Add latest version
go get github.com/stretchr/testify

# Add specific version
go get github.com/stretchr/testify@v1.8.4

# Add a pre-release version
go get github.com/foo/bar@main

# go get updates go.mod:
# require github.com/stretchr/testify v1.8.4

Usare la dipendenza

Dopo go get, importa e usa il pacchetto normalmente:

package main

import (
    "fmt"
    "github.com/stretchr/testify/assert"
    "testing"
)

func TestAdd(t *testing.T) {
    assert.Equal(t, 4, 2+2, "math should work")
    fmt.Println("assertion done")
    _ = assert.New // suppress unused import
}

go mod download

Scarica in anticipo tutte le dipendenze elencate in go.mod nella cache dei moduli:

# Download all deps from go.mod
go mod download

# Download specific module
go mod download github.com/gin-gonic/gin@v1.9.1

# Useful for:
# - Docker layer caching (copy go.mod/go.sum first, then download)
# - Pre-warming CI cache
# - Offline development setup

Selezione delle versioni semantiche: MVS

Go usa la selezione della versione minima (MVS): sceglie sempre la versione minima richiesta che soddisfa tutte le dipendenze. Non esegue automaticamente gli aggiornamenti alla versione principale successiva:

# If A requires gin v1.9.0
# and B requires gin v1.9.1
# MVS selects v1.9.1 (minimum that satisfies both)

# To upgrade ALL dependencies to latest minor/patch:
go get -u ./...

# To upgrade specific package:
go get -u github.com/gin-gonic/gin

go mod why — Spiegare le dipendenze

Scopri perché un modulo è richiesto nella build:

# Why is encoding/json needed?
go mod why encoding/json

# Why is golang.org/x/net needed?
go mod why golang.org/x/net

# Output shows the import chain:
# github.com/myapp
# github.com/gin-gonic/gin
# golang.org/x/net

go mod vendor per build riproducibili

Il vendoring blocca tutte le dipendenze nel repository per ottenere build riproducibili:

# Vendor all deps
go mod vendor

# Build only from vendor (no network)
go build -mod=vendor ./...

# Dockerfile pattern:
# COPY go.mod go.sum ./
# RUN go mod download
# COPY . .
# RUN go build ...

Moduli privati con GONOSUMCHECK e GOPRIVATE

Configura Go per i moduli privati ospitati su server interni:

# Tell Go not to use proxy/sumdb for private modules
export GOPRIVATE=github.com/mycompany/*
export GONOSUMCHECK=github.com/mycompany/*

# Or in go env:
go env -w GOPRIVATE=github.com/mycompany/*

# For enterprise Go proxy:
export GOPROXY=https://proxy.mycompany.com,direct

go clean -modcache

Svuota la cache dei moduli per forzare il nuovo download di tutte le dipendenze:

# Clear entire module cache
go clean -modcache

# Clear cache for specific version
go clean -modcache github.com/gin-gonic/gin@v1.9.1

# Useful when:
# - Cache is corrupted
# - Testing with a fresh environment
# - Disk space cleanup

Controllare le vulnerabilità: govulncheck

Lo scanner ufficiale delle vulnerabilità di Go controlla le dipendenze alla ricerca di CVE note:

# Install govulncheck
go install golang.org/x/vuln/cmd/govulncheck@latest

# Scan your module
govulncheck ./...

# Output example:
# Vulnerability #1: GO-2023-1234
# github.com/foo/bar v1.2.3
# Fixed in: v1.2.4
# Suggestion: go get github.com/foo/bar@v1.2.4

Verifica rapida

Quale comando aggiunge una versione specifica di una dipendenza al modulo?

Riepilogo: dipendenze esterne

Riepilogo:

  • go get pkg@version aggiunge le dipendenze
  • Go usa MVS: la versione minima che soddisfa tutti i requisiti
  • go mod tidy rimuove le dipendenze inutilizzate
  • go mod vendor serve per build offline completamente riproducibili
  • Usa GOPRIVATE per i moduli privati
  • Esegui govulncheck per trovare le vulnerabilità

Domande Frequenti

La lezione «Aggiungere dipendenze esterne» è gratuita?

Sì — il testo completo di «Aggiungere dipendenze esterne» è 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 «Aggiungere dipendenze esterne»?

go get, versionamento e cache dei moduli 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 3 di 4.

Quanto tempo richiede la lezione «Aggiungere dipendenze esterne»?

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