Outils pour utilisateurs

Outils du site


cours:informatique:dev:golang:demarrer_avec_go:130_espaces_travail_et_paquets

Notes et transcriptions du cours “Démarrer avec Go” proposée par University of California, Irvine disponible sur la plateforme coursera.

Espaces de travail et paquets

Espaces de travail

Nous allons maintenant parler de la façon dont le code est organisé dans Go. Commençons par l'espace de travail. Il s'agit essentiellement d'un répertoire où sera placé votre travail en Go, donc vos fichiers Go. Vos fichiers source Go et les autres fichiers ressources seront placés dans ce répertoire désigné espace de travail.

Standardisation

Il existe en fait une hiérarchie de répertoires usuelle (standard) dans votre espace de travail dans laquelle vous stockez les différents types de fichiers Go avec lesquels vous travaillez.

La raison pour laquelle le langage Go définit cette hiérarchie de répertoires, c'est parce qu'une organisation commune favorise le partage, la réutilisation. L' une des principales motivations du langage Go, est donc de permettre aux gens de travailler facilement ensemble.

N'oubliez pas que lorsque vous programmez, c'est presque jamais seul, c'est toujours au sein d'un grand groupe. Vous travaillez avec des gens partout. Ils doivent être capables de travailler avec votre code, de l'examiner, de le fusionner avec le leur, de le lier à leur code, etc.

Cette idée du partage est centrale. Peut-être souhaiteriez-vous pouvoir pousser votre code sur GitHub et avoir un groupe commun de personnes travaillant ensemble sur le code. Pour cela, c'est bien d'avoir une organisation standardisée commune de vos fichiers, n'est-ce pas ? Cela facilite le partage, car tout le monde sait où tout se trouve. Les outils savent où se trouvent les objets etc.

Votre espace de travail, devrait contenir ces trois sous-répertoires :

  • src : Le répertoire source contient les fichiers sources, votre code source, votre code Go ;
  • pkg : Le répertoire des packages contient les packages, les autres packages que vous allez lier et dont vous avez besoin ;
  • bin : Le répertoire des binaires qui contient tous vos exécutables, vos programmes compilés.

Notons que programmeur dispose généralement d'un seul espace de travail pour de nombreux projets. J'utilise donc généralement mon seul répertoire d'espace de travail et je peux avoir 20 projets, 20 projets Go différents sur lesquels je travaille dans le même espace de travail. C'est courant. Vous n'êtes pas obligé de le faire, mais c'est courant.

Une chose à retenir à propos de cette hiérarchie de répertoires est qu'elle est recommandée mais qu'elle n'est pas nécessaire/obligatoire. Cette idée d'avoir le sous-répertoire src, le sous-répertoire bin et le sous-répertoire du pkg n'est pas obligatoire.

Ainsi, vous pouvez avoir un exécutable dans le répertoire src si vous le souhaitez. Ce n'est pas idéal et c'est plus difficile à partager pour vos collaborateurs, mais ça va très bien fonctionner. Vous pouvez le compiler, placer où vous le souhaitez l'exécutable et l'invoquer.

Le répertoire de l'espace de travail est défini par la variable d'environnement GOPATH. La définition des variables d'environnement dépendra de votre système d'exploitation. Dans la plupart des cas, GOPATH est défini automatiquement pour vous pendant le processus d'installation. L'assistant d'installation définit la variable d'environnement GOPATH.

Sur une machine Windows, le répertoire par défaut est C:\Users\yourname\go. Il s'agit de l'espace de travail par défaut, il pourra être modifié mais pour l'instant, je suppose simplement que nous utilisons le GOPATH par défaut.

Les outils Go, supposent que le code se trouve quelque part dans le GOPATH.

Les paquets (packages)

Abordons le concept des paquets (packages). Votre code est organisé en packages.

  • Un package est un groupe de fichiers sources connexes (en relation) ;
  • Chaque package peut être importé par d'autres packages.

Cela est principalement utile lorsque vous travaillez avec d' autres groupes de personnes dans d'autres endroits : vous écrivez tout votre code dans un package, ils écrivent tout leur code dans un autre package, puis si vous devez utiliser leur code, vous pouvez importer leur package. C'est donc une bonne chose pour la réutilisation des logiciels, c'est l'objectif principal.

La première ligne du fichier nomme le package.

Sur la schéma ci-dessus, on peut voir deux boîtes roses. Il s'agit de deux packages définis dont vous pouvez voir la première ligne. Ce sont deux fichiers sources différents. Vous pouvez voir que les noms des packages sont marqués en haut après le mot clé “package”. Il y des tas de code là-dedans et ils sont associés au nom de ce package.

Ensuite, en bleu, j'ai un autre morceau de code dans un fichier source différent et il doit utiliser les packages des deux autres personnes. J'ai donc une instruction d'entrée en haut de mon fichier bleu et je donne les noms des packages que je souhaite importer.

Je peux donc utiliser ces deux autres packages dans mon code si je le souhaite. C'est ainsi que les packages sont connectés les uns aux autres. Si vous travaillez avec quelqu'un à distance ou ailleurs, c'est très pratique de pouvoir séparer le code de manière nette.

Le package main

Il doit toujours y avoir un paquet appelé main, c'est là que l'exécution commence. Vous remarquerez que le code que nous produisons dans ce cours n'est pas volumineux, nous l'intégrons donc au paquet main. Cependant vous constaterez rapidement que lorsque des groupes de personnes travaillent ensemble, différents packages seront présents.

Il doit y avoir un paquet main et lorsque vous le compilez, un exécutable est produit.

Notez donc que lorsque vous compilez un autre package que main, il n'est pas produit un exécutable car ce package ne sera pas exécutable directement. Il sera intégré à un autre package.

Le package main, c'est bien le code qui va être exécuté. Ainsi, lorsque vous le compilez, vous obtenez un fichier exécutable. Ce package main doit donc avoir une fonction appelée main. La fonction main() est le point de départ de l'exécution du code.

Vous pouvez donc voir l'exemple de code ci-dessous.

  1. package main
  2.  
  3. import "fmt"
  4.  
  5. func main() {
  6. fmt.Printf("hello, world\n")
  7. }

Il s'agit simplement d'afficher le message «Hello, world».

  • Ligne 1 : on déclare que le code ci dessous appartient au package main ;
  • Ligne 3 : on importe le package fmt, un des packages fournis avec l'outil Go. Ainsi, lorsque vous téléchargez les outils Go, vous obtenez tous ces packages standards, y compris fmt qui contient de nombreuses fonctions dont Printf contenant les instructions d'affichage. Nous devons donc importer ce package, pour pouvoir utiliser la fonction.
  • Enfin ligne 6 notre fonction main appelle la fonction Printf en passant le message à écrire.

Au final on a un code assez simple, compréhensible.

◁ Précédent | ⌂ Retour au sommaire | Suivant ▷

cours/informatique/dev/golang/demarrer_avec_go/130_espaces_travail_et_paquets.txt · Dernière modification : 2024/05/03 15:47 de yoann