Go to Hackademy website

Premiers pas avec Go

Nicolas Zermati

Posté par Nicolas Zermati dans les catégories back

Cet article est publié sous licence CC BY-NC-SA

Plutôt que de parler de Ruby, je vais élargir le spectre de notre blog dans une série d’articles sur la découverte du langage Go.

Go est bien loin de Ruby par bien des aspects, il s’agit d’un langage compilé, statiquement typé et concurrent. Son modèle objet est également très loin de ce que l’on trouve en Ruby.

Pour autant, on retrouve des bibliothèques standards cohérentes, un ramasse-miette, une forme de duck-typing, de l’inférence de type, une compilation très rapide, etc. Ces points rendent Go très proche, dans la pratique, d’un langage de script.

Installation

L’installation de Go est très simple. Il vous faut tout d’abord télécharger le compilateur puis le décompresser où bon vous semble. Ensuite, il vous faut définir quelques variables d’environnement :

export GOPATH=/where/you/will/write/go/code
export GOROOT=/where/you/unzip/the/go/compiler
export PATH=$GOROOT/bin:$PATH

Les variables GOROOT et PATH ont une signification classique dans le monde Unix. La variable GOPATH pointe le répertoire dans lequel vous devez écrire votre code, c’est également ici que sont rappatriées les sources des packages externes.

Une fois ces deux étapes effectuées, vous pouvez vous rendre dans GOPATH

Organisation du code

L’arborescence du répertoire GOPATH est composée de 3 répertoires principaux :

  • bin : les exécutables compilés,
  • pkg : les bibliothèques et
  • src : les sources des bibliothèques et applications.

Le code se décompose en deux types de packages : bibliothèques et programmes.

Le système de package de Go est simple et efficace. Vous choississez une URL et l’ajoutez dans le $GOPATH/src, par exemple un package nommé synbioz/gosteps aura ses sources dans $GOPATH/src/synbioz/gosteps.

Bibliothèques

Les bibliothèques ne produisent pas de fichiers binaires mais des fichiers précompilés destinés à être réutilisés. Ces fichiers sont placés dans le répertoire $GOPATH/pkg.

La convention veut que le dernier élément du chemin du package soit son nom. Ainsi dans notre exemple on aura l’entête suivante pour les fichiers du package :

package gosteps

La compilation et l’installation peuvent se faire via les commandes suivantes :

go build n25/gosteps
go install n25/gosteps

Programmes

Les programmes sont identiques aux bibliothèques mais utilisent main comme nom de package.

La compilation et l’installation peuvent se faire via les mêmes commandes que pour les bibliothèques. Par contre à l’issue de l’installation, c’est un binaire qui sera placé dans le dossier $GOPATH/bin. Ce binaire généré portera le nom du dernier élément du chemin du package.

Import de packages

Depuis les packages, on peut référencer le contenu des autres bibliothèques avec le mot clé import :

import "synbioz/gosteps"

Ensuite, on utilise le contenu du pakage importé en le préfixant de son nom :

gosteps.Hello()

Seules les fonctions commencant par une majuscule sont visibles de l’extérieur d’un package. Idem pour les champs des structures, mais nous en reparlerons…

Conclusion

Voila pour ce premier article concernant Go et son installation.

Dans mes prochains articles, j’aborderai plus en détails les fonctionnalités du langage en mettant en place une intelligence articifielle pour le jeu Quarto.

L’équipe Synbioz.

Libres d’être ensemble.

Articles connexes

Le web en Crystal

27/08/2020

Crystal, web et Lucky (une intro basique) Depuis un moment j’ai envie de tester le langage Crystal. Celui-ci s’approchant de sa version 1.0, je me suis dit qu’il était temps de regarder ce qu’il...

WebRTC Partie 1 : Signalement par pigeon voyageur

09/07/2020

Alors qu’on parle de connexion pair à pair, si l’on regarde les cas d’usage de WebRTC en ligne, on pourra être surpris de constater que des serveurs centraux sont quasiment toujours requis...

Pilotez vos tests Elixir avec des scénarios

11/06/2020

Photo par Avel Chuklanov depuis Unsplash

Regex : attrapez-les tous !

09/04/2020

Encore un article sur les regex me direz-vous !? Effectivement, après avoir traité des quantificateurs, des propriétés Unicode, et même des emojis, que pourrais-je encore raconter que vous ne sachiez...