Struttura di un Applicativo
Go ha il concetto di workspace che è la directory di testa dell'albero di sviluppo applicativi.
Il workspace ha tre directory principali:
src- sorgenti di tutti i progetti Gobin- esguibili compilati dai sorgenti: sono linkati staticamentepkg- packages compilati e installati: sono librerie statiche linkate agli eseguibili
bin contiene gli eseguibili che sono stati installati.
Il fatto che gli eseguibili siano statici e non abbiano bisogno di librerie dinamiche o di un ambiente runtime li rende estremamente portatili, anche se di dimensione notevole.
src, quando è organizzato bene, è composto di alberi di sottodirectories, a profonditàvariabile ma non eccessiva, con la Struttura informale repository/autore/artefatto.
E' la stessa struttura che viene usata, per esempio, da GitHub.
- repository è lo URL (solo sito web, senza protocollo, porta, ecc.) che indica il repository remote di appoggio del progetto
- autore è l'identificativo univoco del singolo o del gruppo responsabile per la creazione di uno o più progetti
- artefatto è la directory contenente i sorgenti del programma col main o del package che è il progetto singolo di un autore o gruppo
pkg contiene i package dopo la loro installazione, in sottodirectories che hanno la stessa struttura dei corrispondenti sorgenti, repository/autore/artefatto.
Quando un programma importa un package deve usare
import repository/autore/artefatto
e riferirsi internamente alle funzioni o simboli esportati dal package con artefatto.Funzione() o artefatto.Simbolo.
Variabili d'ambiente
Per sviluppare in Go occorre settare alcune variabili d'ambiente:
GOPATHdeve puntare al workspaceGOBINdeve puntare alla sottodirectorybindel workspaceGOROOTdeve puntare alla directory di sistema dove è stato installato Go
E' anche opportuno modificare la variabile d'ambiente PATH di sistema:
export PATH=$GOBIN:$PATH
Si possono avere più workspace, modificando di volta in volta le variabili d'ambiente sopra. Ma durante la compilazione il riferimanto a packages avviene solo nel GOPATH corrente. (Una volta compilati gli eseguibili possono essere messi ovunque, dato che sono statici)
Per iniziare
Supponiamo di aver installato Go in /opt/go e di volere un workspace sotto la directory di login, sottodirectory go:
cd
mkdir -p go/src
mkdir -p go/bin
La directory go/pkg verrà automaticamente creata la prima volta che installiamo un package.
Ora modifichiamo il .profile aggiungendo alla fine:
export GOROOT=/opt/go
export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
export PATH=$GOBIN:$PATH
Per essere sicuri che queste variabili d'ambiente siano riconosciute da tutti i programmi e utilities di sistema, è necessario un relogin.