Menu

Installare Golang su Windows, macOS e Linux, passo per passo

Come scaricare e installare Go su Windows, macOS e Linux, verificare l'installazione con go version, capire GOPATH e risolvere l'errore "go: command not found".

Questa pagina include editor eseguibili: modifica, esegui e vedi subito l'output.

Scarica Go da go.dev/dl, esegui l'installer per il tuo sistema, apri un nuovo terminale ed esegui go version. Su Windows e macOS l'installazione è tutta qui. Su Linux estrai un tarball e aggiungi una cartella al tuo PATH. Le sezioni che seguono trattano ogni sistema, poi i controlli e gli errori che si incontrano davvero.

Non ti serve Go installato per provarlo. Questo programma gira nel tuo browser, sulla stessa release di Go usata dal sito, e ti dice su cosa sta girando:

Una volta installato Go in locale, lo stesso programma stampa i dettagli del tuo computer.

Quale download scegliere

La pagina di download elenca un file per ogni sistema operativo e architettura di CPU:

SistemaFileNote
Windows, la maggior parte dei PCgo1.24.5.windows-amd64.msiamd64 significa Intel o AMD a 64 bit
Windows su ARMgo1.24.5.windows-arm64.msiSurface Pro X, portatili Snapdragon
macOS, Apple Silicon (M1 e successivi)go1.24.5.darwin-arm64.pkgdarwin è macOS
macOS, Intelgo1.24.5.darwin-amd64.pkg
Linux, la maggior parte di server e PCgo1.24.5.linux-amd64.tar.gz
Linux su ARMgo1.24.5.linux-arm64.tar.gzRaspberry Pi 4 e 5 con un sistema a 64 bit, AWS Graviton

Il numero di versione in questi esempi è 1.24.5. Prendi la release stabile più recente che trovi; i passaggi non cambiano da una versione all'altra.

Installare Go su Windows

  1. Scarica il file .msi ed eseguilo.
  2. Accetta le impostazioni predefinite. Go si installa in C:\Program Files\Go e l'installer aggiunge C:\Program Files\Go\bin al tuo PATH.
  3. Chiudi tutte le finestre aperte del Prompt dei comandi o di PowerShell e aprine una nuova. I terminali aperti durante l'installazione hanno ancora il vecchio PATH.
  4. Verifica l'installazione:
go version
go version go1.24.5 windows/amd64

Funziona anche winget, se preferisci un gestore di pacchetti:

winget install GoLang.Go

Installare Go su macOS

Con il pacchetto ufficiale

Scarica il .pkg per il tuo chip e aprilo. Installa Go in /usr/local/go e aggiunge /usr/local/go/bin al tuo PATH tramite il file /etc/paths.d/go. Apri una nuova finestra del Terminale, poi:

go version
go version go1.24.5 darwin/arm64

Con Homebrew

brew install go
go version

Homebrew mette Go sotto il suo prefisso (/opt/homebrew su Apple Silicon) e collega go in una cartella che è già nel tuo PATH. Più avanti aggiorni con brew upgrade go.

Scegli un solo metodo. Avere sia l'installazione dal .pkg sia quella di Homebrew significa due binari go nel tuo PATH, e vince quello che viene prima. which go ti dice quale sta usando la tua shell.

Installare Go su Linux e Ubuntu

Il metodo ufficiale funziona su ogni distribuzione. Rimuovi prima qualsiasi installazione precedente, perché estrarre sopra un vecchio albero mescola file di due versioni e rompe la toolchain:

cd ~/Downloads
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.24.5.linux-amd64.tar.gz

Poi aggiungi Go al tuo PATH. Aggiungi questa riga in fondo a ~/.profile (bash) o a ~/.zshrc (zsh):

export PATH=$PATH:/usr/local/go/bin

Caricala nella shell corrente e verifica:

source ~/.profile
go version
go version go1.24.5 linux/amd64

Pacchetti di Ubuntu: apt e snap

Ubuntu offre due scorciatoie, con compromessi diversi:

# Distribution package: easy, but usually several releases old
sudo apt install golang-go

# Snap: tracks current Go releases
sudo snap install go --classic

La versione di apt conta più di quanto sembri. I moduli dichiarano una versione minima di Go in go.mod. Da Go 1.21 in poi, un modulo che dice go 1.23 non compila con una toolchain più vecchia a meno che Go non possa scaricarne una più recente per te, e le toolchain precedenti alla 1.21 tentano comunque la compilazione e falliscono sulla prima funzionalità più nuova che incontrano (vedi "Tenere Go aggiornato" più sotto). Se installi da apt, esegui go version e confrontalo con go.dev/dl.

Verificare l'installazione

Tre comandi confermano che la configurazione funziona:

go version
go env GOROOT GOPATH
which go
go version go1.24.5 linux/amd64
/usr/local/go
/home/ana/go
/usr/local/go/bin/go
  • GOROOT è dove è installato Go stesso. Non metterci mai il tuo codice, e non dovrebbe servirti impostarlo.
  • GOPATH vale per default $HOME/go (%USERPROFILE%\go su Windows). Go salva i moduli scaricati in $GOPATH/pkg/mod e mette i programmi compilati da go install in $GOPATH/bin.
  • which go (where go su Windows) mostra il binario esatto che esegue la tua shell. Usalo ogni volta che go version riporta una versione che non ti aspettavi.

Esegui il tuo primo programma

Il tuo codice può stare in qualsiasi cartella. Crea una cartella, avvia un modulo e scrivi un file:

mkdir hello
cd hello
go mod init example.com/hello
go: creating new go.mod: module example.com/hello

Salva questo come main.go in quella cartella:

Poi eseguilo:

go run .
Go is installed and working.

go run . compila il package nella cartella corrente e lo esegue. La pagina su hello world spiega ogni riga del programma, e il passaggio go mod init è trattato in Go modules.

Aggiungere GOPATH/bin al PATH

Gli strumenti installati con go install finiscono in $HOME/go/bin, che per default non è nel tuo PATH. Se installi uno strumento e la shell dice che non lo trova, aggiungi anche quella cartella:

go install golang.org/x/tools/cmd/goimports@latest
export PATH=$PATH:$(go env GOPATH)/bin
goimports -h

Metti la riga export in ~/.profile o in ~/.zshrc così resta valida nei nuovi terminali. Su Windows l'installer aggiunge già %USERPROFILE%\go\bin al PATH del tuo utente.

Tenere Go aggiornato

Per aggiornare, installa la nuova release nello stesso modo in cui hai installato la vecchia. Su Linux significa ripetere i passaggi rm -rf /usr/local/go e tar; non saltare la rimozione.

Da Go 1.21 il comando go può anche scaricare al volo una toolchain più recente. Se il go.mod di un modulo dice go 1.24 e hai installato Go 1.22, eseguire go build scarica Go 1.24 nella cache dei moduli e lo usa, purché GOTOOLCHAIN resti sul suo valore predefinito auto. Il Go che hai installato non cambia; solo quel modulo compila con la release più nuova.

Per tenere a portata di mano una versione più vecchia da usare nei test, installala in parallelo:

go install golang.org/dl/go1.23.4@latest
go1.23.4 download
go1.23.4 version

Errori comuni di installazione

go: command not found o zsh: command not found: go. La shell non trova il binario. Su Linux, controlla che /usr/local/go/bin sia nella riga export PATH del file che la tua shell legge davvero (~/.zshrc per zsh, ~/.profile o ~/.bashrc per bash), poi apri un nuovo terminale. Esegui echo $PATH per vedere cosa ha la shell.

'go' is not recognized as an internal or external command (Windows). Chiudi e riapri il terminale. Se il problema resta, apri "Modifica le variabili d'ambiente di sistema", fai clic su Variabili d'ambiente e assicurati che C:\Program Files\Go\bin sia in Path. Il terminale integrato di VS Code eredita l'ambiente con cui è partito VS Code, quindi riavvia anche VS Code.

go version mostra la vecchia versione dopo un aggiornamento. Ci sono due installazioni nel tuo PATH. Esegui which -a go (o where go su Windows) e rimuovi quella che non vuoi, spesso un pacchetto apt in /usr/bin/go che nasconde /usr/local/go/bin/go.

go: go.mod file not found in current directory or any parent directory. Go è installato correttamente; hai eseguito go build o go run . fuori da un modulo. Esegui prima go mod init example.com/yourname nella cartella del progetto.

Strani errori di compilazione nella libreria standard dopo un aggiornamento su Linux. Il nuovo tarball è stato estratto sopra il vecchio albero. Cancella completamente /usr/local/go ed estrai di nuovo.

Permission denied durante l'estrazione. /usr/local appartiene a root, quindi i comandi rm e tar richiedono sudo. Il tuo codice non ha mai bisogno di sudo.

Configurare l'editor

Va bene qualsiasi editor, ma installa il supporto per Go così hai completamento, evidenziazione degli errori e formattazione al salvataggio. In VS Code, installa l'estensione ufficiale Go (pubblicata dal team di Go in Google); la prima volta che apri un file .go ti propone di installare gopls, il language server di Go. GoLand di JetBrains è la principale opzione commerciale. Vim e Neovim usano gopls attraverso i loro client LSP.

Domande frequenti

Come installo Golang?

Scarica l'installer per il tuo sistema da go.dev/dl. Su Windows esegui il .msi, su macOS esegui il .pkg (oppure brew install go), e su Linux estrai il tarball in /usr/local e aggiungi /usr/local/go/bin al tuo PATH. Apri un nuovo terminale ed esegui go version per conferma.

Come risolvo "go: command not found"?

La shell non trova il binario go nel tuo PATH. Su Linux aggiungi export PATH=$PATH:/usr/local/go/bin a ~/.profile (o a ~/.zshrc per zsh), poi apri un nuovo terminale. Con gli installer di Windows e macOS di solito basta chiudere e riaprire il terminale, perché un terminale mantiene il PATH con cui è stato avviato.

Come installo Go su Ubuntu?

Usa il tarball ufficiale: sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.24.5.linux-amd64.tar.gz, poi aggiungi /usr/local/go/bin al PATH. Funziona anche sudo apt install golang-go, ma il pacchetto di Ubuntu è spesso indietro di diverse release. sudo snap install go --classic segue le release attuali.

Devo impostare GOPATH?

No. Da Go 1.16 la modalità moduli è quella predefinita, quindi il tuo codice può stare in qualsiasi cartella. GOPATH vale per default $HOME/go e si usa solo per la cache dei moduli scaricati e per i binari compilati da go install, che finiscono in $HOME/go/bin.

Come controllo quale versione di Go è installata?

Esegui go version. Stampa qualcosa come go version go1.24.5 linux/amd64: la release, poi il sistema operativo e l'architettura della CPU. go env mostra la configurazione completa, compresi GOROOT (dove è installato Go) e GOPATH.

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA