Utilizzo di Go (Golang)
Panoramica
Go, spesso chiamato Golang, è un linguaggio di programmazione compilato, tipizzato staticamente e open source, progettato da Google. È apprezzato dagli sviluppatori per la sua sintassi essenziale, la velocità di compilazione estremamente rapida, il potente supporto alla concorrenza (grazie a meccanismi come goroutine
leggere e channel
per la comunicazione) e il garbage collector incorporato efficiente. Go eccelle nello sviluppo di servizi di rete ad alte prestazioni, sistemi distribuiti, microservizi e strumenti da linea di comando, diventando una delle scelte principali per applicazioni cloud native e sviluppo backend.
Supporto di Go in ServBay
ServBay, un ambiente di sviluppo web locale integrato progettato appositamente per macOS, offre un supporto senza soluzione di continuità per gli sviluppatori Go. Con ServBay, puoi installare, gestire e passare tra versioni multiple di Go in modo semplice, senza la necessità di configurare manualmente variabili di ambiente complesse (come GOROOT
, GOPATH
), semplificando enormemente l'inizializzazione e la manutenzione dell'ambiente Go.
ServBay include la toolchain Go completa e supporta una vasta gamma di versioni, dalle release storiche alle più recenti, per assicurare che tu possa soddisfare i requisiti di qualsiasi progetto:
- Go 1.11
- Go 1.12
- Go 1.13
- Go 1.14
- Go 1.15
- Go 1.16
- Go 1.17
- Go 1.18
- Go 1.19
- Go 1.20
- Go 1.21
- Go 1.22
- Go 1.23
- Go 1.24 (e ulteriori versioni saranno supportate con i futuri aggiornamenti di ServBay)
Supporto Go Modules
L’ambiente ServBay abilita e consiglia di default l’utilizzo di Go Modules per la gestione delle dipendenze. Dai Go 1.11, questa è la soluzione ufficiale e suggerita per la gestione delle dipendenze. Nel terminale ServBay, puoi utilizzare direttamente tutti i comandi di go mod
(come go mod init
, go get
, go mod tidy
) senza doverti preoccupare della configurazione tradizionale di $GOPATH
.
Prerequisiti
- ServBay deve essere installato e correttamente eseguito su macOS.
- Conoscenza di base della programmazione con Go.
- Familiarità con i comandi di base da terminale (Terminale).
Installazione di Go
Installare Go attraverso l’intuitivo pannello grafico (GUI) di ServBay è molto semplice:
- Avvia l’applicazione ServBay.
- Nella barra di navigazione a sinistra, clicca su
Pacchetti
. - Nella lista dei pacchetti espansa, trova la categoria
Go
. - Clicca su
Go
per espandere la lista delle versioni di Go disponibili. - Seleziona la versione di Go desiderata (di solito è consigliato l’ultima versione stabile, ad esempio Go 1.24). Clicca sul pulsante
Installa
accanto alla versione scelta. - ServBay scaricherà e installerà automaticamente la versione selezionata di Go. Il tempo richiesto dipende dalla velocità della tua connessione internet.
Una volta completata l’installazione, lo stato mostrerà che la versione è installata. Potrai installare altre versioni o passare da una versione installata all’altra quando necessario.
Utilizzare Go
Dopo aver installato con successo Go, puoi utilizzare direttamente i comandi go
nel terminale del sistema operativo.
Per verificare che Go sia installato correttamente e vedere la versione attiva, puoi eseguire:
go version
Il terminale restituirà un output simile al seguente, indicandoti la versione di Go attualmente gestita da ServBay:
go version go1.24.1 darwin/arm64
Compilare ed eseguire una semplice applicazione web Go
Vediamo ora come creare un server HTTP Go di base e compilarlo ed eseguirlo nell’ambiente ServBay.
Crea la cartella del progetto:
È consigliato creare una nuova cartella per il progetto Go nella directory web root di default di ServBay/Applications/ServBay/www
. Ad esempio, potresti creare una cartella chiamatago-servbay-demo
.bashcd /Applications/ServBay/www mkdir go-servbay-demo cd go-servbay-demo
1
2
3Inizializza i Go Modules:
Nella root del progetto (go-servbay-demo
), usa il comandogo mod init
per inizializzare Go Modules. Il percorso del modulo dovrebbe essere un identificativo unico relativo al repository o al progetto; in questo esempio useremo il nome della cartella.bashgo mod init go-servbay-demo
1Questo comando creerà un file
go.mod
nella directory corrente, che terrà traccia delle dipendenze del progetto.Scrivi il codice Go:
Crea un file sorgente chiamatomain.go
e incolla il seguente codice:gopackage main import ( "fmt" "log" "net/http" "os" ) func handler(w http.ResponseWriter, r *http.Request) { hostname, _ := os.Hostname() fmt.Fprintf(w, "Hello from Go on ServBay!\nHostname: %s\nPath: %s\n", hostname, r.URL.Path) } func main() { http.HandleFunc("/", handler) port := "8080" // Definisce la porta di ascolto del server log.Printf("Go web server starting on port %s...", port) log.Printf("Access it at http://localhost:%s", port) // Avvia il server HTTP err := http.ListenAndServe(":"+port, nil) if err != nil { log.Fatalf("Errore all'avvio del server: %s\n", err) } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27Questo codice definisce un semplice server HTTP che ascolta sulla porta 8080. Per ogni richiesta ricevuta, risponde con il testo "Hello from Go on ServBay!", il nome del computer e il percorso della richiesta.
Esegui l’applicazione Go:
Assicurati di trovarti nella directory del progetto (/Applications/ServBay/www/go-servbay-demo
) all’interno del terminale ServBay, poi esegui il tuo programma con:bashgo run main.go
1Se tutto è andato a buon fine, vedrai un output simile nel terminale, che indica che il server è avviato correttamente:
2024/05/20 15:00:00 Go web server starting on port 8080... 2024/05/20 15:00:00 Access it at http://localhost:8080
1
2Accedi all’applicazione:
Apri il browser e visitahttp://localhost:8080
. Dovresti vedere una risposta tipo "Hello from Go on ServBay! Hostname: your-mac-hostname Path: /".
Configurare il reverse proxy dal sito ServBay (fortemente consigliato)
Anche se puoi accedere direttamente all’applicazione tramite localhost:8080
, per lo sviluppo locale è raccomandato utilizzare un dominio facile da ricordare (es. go-app.servbay.demo
) e configurare un reverse proxy tramite il server web di ServBay (Caddy, Apache o Nginx). In questo modo, l’app Go sarà accessibile sulle porte standard HTTP/HTTPS come in produzione, e potrai beneficiare delle funzionalità aggiuntive di ServBay (certificati HTTPS automatici, integrazione con altri servizi e altro).
- Crea un sito in ServBay:
- Apri la GUI di ServBay e vai nella sezione
Siti
. - Clicca su
Aggiungi sito
. - Dominio: Inserisci il nome di dominio che vuoi usare in locale, ad esempio
go-app.servbay.demo
. - Tipo di sito: Scegli Reverse Proxy.
- Indirizzo IP: Inserisci
127.0.0.1
. - Porta: Inserisci
8080
.
- Apri la GUI di ServBay e vai nella sezione
Salva e ricarica la configurazione:
Dopo aver salvato le modifiche nella GUI di ServBay, assicurati di riavviare o ricaricare il server web corrispondente (Caddy o Nginx) per applicare la nuova configurazione.Accedi all’applicazione tramite dominio:
Ora puoi visitare la tua applicazione web Go all’indirizzohttps://go-app.servbay.demo
direttamente nel browser. Il server web di ServBay si occuperà di inoltrare le richieste al programma Go in modo trasparente.
Gestione delle versioni di Go
ServBay semplifica drasticamente la gestione e il passaggio tra versioni diverse di Go.
- Cambio versione: Nella GUI ServBay sotto
Pacchetti
->Go
puoi vedere tutte le versioni di Go installate. Nel menu laterale, vai suImpostazioni
per impostare una versione predefinita. - Verifica del cambio: Dopo il cambio versione, riapri un nuovo terminale ed esegui
go version
per verificare che la versione attiva sia aggiornata a quella appena selezionata.
Gestire la versione Go a livello di progetto con .servbay.config
Oltre al cambio globale della versione Go, ServBay offre anche la possibilità di gestire a livello di progetto tramite un file chiamato .servbay.config
posizionato nella root del progetto.
Come funziona:
Quando, usando il terminale integrato di ServBay, esegui cd
in una directory che contiene un file .servbay.config
, ServBay lo rileva automaticamente e legge la configurazione al suo interno. In base al valore di GO_VERSION
(o altri parametri), il terminale imposterà temporaneamente l’ambiente sulla versione di Go specificata per quella sessione.
Formato del file di configurazione:
.servbay.config
è un semplice file di testo basato su coppie chiave-valore. Per specificare la versione di Go per il progetto, basta aggiungere una riga come la seguente:
# Esempio di file .servbay.config
# Specifica che il progetto usa Go 1.22
GO_VERSION=1.22
# È possibile specificare versioni anche per altri strumenti di sviluppo
# PHP_VERSION=8.3
# NODE_VERSION=20
# PYTHON_VERSION=3.11
# ... altre eventuali configurazioni ...
# GOPROXY=https://goproxy.cn,direct
2
3
4
5
6
7
8
9
10
Vantaggi:
- Cambio automatico: Non serve cambiare manualmente la versione globale, ti basta entrare nella cartella del progetto per usare la versione di Go richiesta.
- Isolamento dei progetti: Ogni progetto sarà sicuramente compilato ed eseguito nell’ambiente Go desiderato, evitando conflitti di versione.
- Collaborazione di gruppo: Puoi inserire il file
.servbay.config
in controllo versione (es. Git) così che tutta la squadra abbia lo stesso ambiente base una volta clonato il repository.
Esempio pratico:
Mettiamo di gestire due progetti diversi:
project-a
richiede Go 1.12project-b
richiede Go 1.22
Nel root dei due progetti, imposta i rispettivi .servbay.config
:
/Applications/ServBay/www/project-a/.servbay.config
:iniGO_VERSION=1.12
1/Applications/ServBay/www/project-b/.servbay.config
:iniGO_VERSION=1.22
1
Quando, da terminale ServBay, entri in /Applications/ServBay/www/project-a
e lanci go version
vedrai Go 1.12.x. Entrando in /Applications/ServBay/www/project-b
e lanciando go version
invece vedrai Go 1.22.x.
Nota: .servbay.config
influenza la versione base di Go per l’ambiente di ServBay. Per la gestione delle dipendenze specifiche del progetto si consiglia l’uso di Go Modules (go.mod
).
Domande frequenti (FAQ)
D: Ricevo un errore "command not found" quando uso il comando
go
dal terminale ServBay?R: Prima di tutto, assicurati che il tuo terminale abbia le variabili PATH di ServBay correttamente impostate. Poi verifica di aver installato almeno una versione di Go tramite la GUI ServBay (
Pacchetti
->Go
) e che sia attivata una versione predefinita.D: Come posso aggiornare Go all’ultima versione in ServBay?
R: Controlla regolarmente la sezione
Pacchetti
->Go
nella GUI ServBay. Se sono disponibili nuove versioni di Go, appariranno nella lista: puoi installarle cliccando sul relativo pulsante. Dopo l’installazione, imposta la nuova versione come predefinita tramite la GUI per iniziare a usarla.D: Riscontro lentezza nel download delle dipendenze o problemi di rete usando Go Modules?
R: Di default, Go Modules scarica le dipendenze da
proxy.golang.org
. In Cina mainland o in aree con restrizioni di rete, puoi incontrare problemi di accesso. Puoi configurare la variabile d’ambienteGOPROXY
per usare mirror più veloci, comehttps://goproxy.cn
ohttps://goproxy.io
. Puoi impostarla a livello globale in ServBay o tramite il file.servbay.config
(ad es.GOPROXY=https://goproxy.cn,direct
).D: L’avvio della mia app web Go fallisce con errore "address already in use" (porta occupata)?
R: Questo significa che la porta specificata nel codice (esempio 8080) è già usata da un altro processo sul sistema. Puoi: 1) Modificare il codice Go per usare una porta libera (ad es. 8081, 9000, ecc.); 2) Individuare e terminare il processo che usa quella porta. Su macOS, il comando
lsof -i :<numero_porta>
(es.lsof -i :8080
) mostra il PID del processo; chiudilo conkill <PID>
.D: Che differenza c’è tra
.servbay.config
e il cambio versione Go globale? Qual è meglio usare?R: Il cambio globale (tramite GUI ServBay) imposta la versione di Go predefinita per tutto il sistema.
.servbay.config
agisce a livello di progetto, sovrascrivendo temporaneamente la versione di Go solo nella directory in cui si trova il file. È consigliato usare.servbay.config
per gestire versioni specifiche di progetto, così da garantire isolamento e riproducibilità dell’ambiente, specialmente se lavori contemporaneamente su più progetti con versioni diverse. Il cambio globale è utile per impostare una preferenza di default.
Conclusione
ServBay rappresenta una soluzione estremamente efficiente e user-friendly per sviluppatori Go (Golang) su macOS. Grazie all’interfaccia grafica intuitiva puoi installare e gestire facilmente versioni multiple di Go, sfruttando .servbay.config
per il controllo puntuale a livello di progetto. Associando i Go Modules per la gestione delle dipendenze e il server Web integrato di ServBay per il reverse proxy e l’hosting delle app, puoi rapidamente creare, testare e distribuire le tue applicazioni Go. ServBay riduce al minimo la complessità della configurazione ambiente, lasciandoti libero di concentrarti davvero sullo sviluppo del tuo codice Go.