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:
GOPATH
deve puntare al workspaceGOBIN
deve puntare alla sottodirectorybin
del workspaceGOROOT
deve 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.