Commencer avec GO
Il y a un moment que j’entends parler de GO (aka golang) le nouveau langage de google qui commence à prendre de l’importance.
Je me suis dit qu’il était tant que je regarde de plus prêt ce langage. Le but de cet article est de faire un bref recap de ce que j’ai pu utiliser comme ressources pour pouvoir commencer.
Je me suis fixer un objectif, faire une simple API (un fizzbuzz) exposé en REST et qui retourne du JSON.
Le résultat est disponible ici :
Pour commencer
Pour commencer par le début, j’ai suivi “A Tour of GO”, c’est un tuto qui permet de bien comprendre le particularité du langage.
Le plus surprenant pour quelqu’un qui comme moi vient du java :
- Le return qui accepte plusieurs valeurs
- La majuscule pour rendre quelque chose publique
- Uniquement des for pour les boucles
- Pas de notion d’exception
- Pas de notion d’enum (https://blog.learngoprogramming.com/golang-const-type-enums-iota-bc4befd096d3)
- J’en oubli surement plein d’autre …
Organisation des projets
Pour l’organisation des projets j’ai essayer de suivre les bonnes pratiques qui sont décrites dans ce projet qui décrit bien comment organiser son projet.
Gestion de dépendance
C’est la parti pas super clair pour moi, il y a l’air d’avoir eu beaucoup de changement autour de cette partie. Dans mon cas je suis partis sur le gestionnaire de dépendance dep. C’est assez simple a utiliser, ça créer un fichier .lock et un fichier .toml à la racine du projet qui permet ensuite de créer un répertoire vendor avec les dépendances. Ça rappel un peu le fonctionnement de npm.
Créer son API
Pour faire tourner une API pas besoin de serveur d’application, GO va créer un exécutable qui démarre son propre server http.
Pour faire ça j’utilise GIN qui est vraiment très simple à écrire et qui permet de faire son routing très facilement. Comme vous pouvez le voir sur la fonction SetupRouter dans le main du projet.
Test unitaire
Pour ce qui est des tests unitaires je me suis basé sur testify qui permet d’avoir des asserts qui n’existe pas en natif dans le langage.
Logs
Conclusion
Pour quelqu’un qui vient du JAVA comme moi, le GO est un peu perturbant au début mais beaucoup moins que d’autre (moins que le javascript a mon humble avis).
On y retrouve les types, et une façon de programmer assez classique.
Le gros plus c’est que ça s’écrit plutôt vite et que ça compile bien (pas de build compliquer à prévoir).
Je vais continuer à creuser autour du GO et peut être que je ferrait de nouveau article autour de ce langage.