1.2 $GOPATH et workspace

$GOPATH

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.

Dossier de paquets

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.

Compilation des paquets

Nous avons créé notre paquet précédemment, mais comment le compiler pour un usage concret? Il y a deux méthodes différentes.

  1. Placez-vous dans le dossier contenant votre paquet, puis exécutez la commande go install.
  2. 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

Installer des paquets distants

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"

Arborescence complète de dossier

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.

results matching ""

    No results matching ""