#1.2 $GOPATH et workspace
Les commandes Go reposent sur une variable d'environnement nommée $GOPATH1. Notez que ce n'est pas la variable $GOROOT où Go est installé. Cette variable pointe vers votre espace de travail(workspace) Go de votre ordinateur (J'utilise ce chemin sur mon ordinateur; si vous n'utilisez pas la même structure de dossiers, veillez à le faire correspondre par vous-même).
Dans un système de type Unix, la variable peut-être configurée comme suit:
export GOPATH=/home/apple/mygo
Pour plus de commodité, vous devriez ajouter une ligne à votre .bashrc ou .zshrc, ou tout autre fichier de configuration de configuration du shell approprié.
Sous Windows, vous devez créer une variable d'environnement nommée GOPATH, et définir sa valeur à c:\mygo
:
GOPATH=c:\mygo
Il est possible d'avoir plusieurs répertoires dans votre $GOPATH, à séparer par un :
sous Unix, et ;
sous Windows
Dans votre $GOPATH vous devez avoir trois sous-répertoires:
src
pour héberger le code source (par exemple: .go .c .h .s, etc.)pkg
pour les fichiers compilés (par exemple: .a)bin
pour les fichiers exécutable compilés
Dans le reste de ce livre, j'utilise le dossier Mygo
comme répertoire de mon $GOPATH.
Créez les fichiers et dossiers d'un paquet source comme $GOPATH/src/mymath/sqrt.go
(mymath
est le nom du paquet)
Chaque fois que vous créez un paquet, vous devriez créer un nouveau dossier dans le répertoire src
.
Les noms de dossiers correspondent généralement à celui du paquet que vous souhaitez utiliser.
Vous pouvez avoir plusieurs niveaux de dossiers si vous le désirez.
Par exemple si vous créez le dossier $GOPATH/src/github.com/astaxie/beedb
, alors le chemin du paquet sera github.com/astaxie/beedb
.
Le nom du paquet sera celui du dernier dossier de votre chemin, qui est beedb
dans notre exemple.
Exécutez les commandes suivantes:
cd $GOPATH/src
mkdir mymath
Créez un nouveau fichier sqrt.go
, ajoutez le contenu suivant à celui-ci:
// Code source de $GOPATH/src/mymath/sqrt.go
package mymath
func Sqrt(x float64) float64 {
z := 0.0
for i := 0; i < 1000; i++ {
z -= (z*z - x) / (2 * x)
}
return z
}
Maintenant le dossier de mon paquet a été créé et son code écrit. Je vous recommande d'utiliser le même nom pour vos paquets et leurs dossiers, et que les dossiers contiennent tous les fichiers sources du paquet.
Nous avons créé notre paquet précédemment, mais comment le compiler pour un usage concret? Il y a deux méthodes différentes.
- Placez-vous dans le dossier contenant votre paquet, puis exécutez la commande
go install
. - Exécutez la commande précédente mais en passant un nom de fichier en paramètre, comme
go install mymath
.
Après compilation, on peut ouvrir le dossier suivant:
cd $GOPATH/pkg/${GOOS}_${GOARCH}
// On peut y trouver le fichier compilé
mymath.a
Le fichier dont le suffixe est .a
est le fichier binaire de notre paquet. Comment l'utiliser?
Assurément, nous devons créer une application pour l'utiliser.
Créez un nouveau paquet appelé mathapp
.
cd $GOPATH/src
mkdir mathapp
cd mathapp
vim main.go
Le code de main.go
//code source de $GOPATH/src/mathapp/main.go.
package main
import (
"mymath"
"fmt"
)
func main() {
fmt.Printf("Hello, world. Sqrt(2) = %v\n", mymath.Sqrt(2))
}
Pour compiler cette application, vous devez vous placer dans le dossier du paquet
cd $GOPATH/src/mathapp
puis exécutez
go install
Vous devriez désormais voir un fichier exécutable mathapp
généré dans le dossier $GOPATH/bin/
.
Pour lancer ce programme, utilisez la commande
./mathapp
Vous devriez voir le contenu suivant dans votre temrinal:
Hello world. Sqrt(2) = 1.414213562373095
Go a un outil pour installer des paquets distants, qui est l'outil go get
.Il supporte la majorité des communautés libres, comme
Github, Google Code, BitBucket, et Launchpad.
go get github.com/astaxie/beedb
Vous pouvez utiliser
go get -u
pour mettre à jour vos paquets distants, cela mettra aussi à jour les dépendances.
Vous obtiendrez le code source des paquets désirés grâce à cette commande, depuis différentes plate-formes, utilisant chacune leur système de gestion de version.
Par exemple, git
pour Github et hg
pour Google Code. Ainsi vous devrez au préalable installer le client du système de gestion de version approprié
avant d'utilisergo get
.
Après avoir utilisé les commandes précédentes, votre structure de dossier devrait ressembler à celle-ci:
$GOPATH
src
|-github.com
|-astaxie
|-beedb
pkg
|--${GOOS}_${GOARCH}
|-github.com
|-astaxie
|-beedb.a
En fait, go get
clone le source code dans le dossier $GOPATH/src en local, puis exécute go install
.
Vous pouvez utiliser des paquets distants de manière similaire aux paquets locaux.
import "github.com/astaxie/beedb"
Si vous avez suivi toutes les étapes précédentes, la structure de votre dossier ressemble désormais à ceci:
bin/
mathapp
pkg/
${GOOS}_${GOARCH}, such as darwin_amd64, linux_amd64
mymath.a
github.com/
astaxie/
beedb.a
src/
mathapp
main.go
mymath/
sqrt.go
github.com/
astaxie/
beedb/
beedb.go
util.go
Vous pouvez désormais vous rendre compte de manière plus claire de l'arborescence; bin
contient les exécutables, pkg
les fichiers compilés et
src
les paquets sources.
[1] Le format des variables d'environnement sous Windows est %GOPATH%
, pourtant ce livre suit principalement la norme Unix,
les utilisateurs Windows devront faire les modifications appropriées.
- Table des matières
- Section précédente: Installation
- Section suivante: Go commands