Comment apprendre Golang : l’expérience d’un ingénieur DevOps

Né de la critique du C++ et d’autres langages similaires, Go a été créé en 2007 par des ingénieurs logiciels de Google. Aussi appelé allerGo visait à augmenter la productivité des programmeurs en offrant une meilleure expérience de programmation que les langages populaires utilisés à l’époque.

L’objectif de Google était de créer un langage compilé, typé statiquement, lisible et inscriptible qui fonctionnait bien, en particulier dans le domaine de la concurrence et des réseaux hautes performances. Améliorant les langages plus anciens créés avant l’avènement des processeurs multicœurs, Go ajoute la concurrence intégrée avec goroutines et Accéder aux chaînes

La conception de Go offre également d’autres commodités aux développeurs, telles que la récupération de place, un gestionnaire de packages intégré et une simple compilation multiplateforme. Pour les programmeurs débutants et chevronnés, Go est un choix bien adapté avec de nombreuses fonctionnalités modernes conçues avec soin et des ressources d’apprentissage de haute qualité.

Comment commencer

Go dispose d’une documentation complète qui fournit une variété de ressources, telles que des didacticiels interactifs, des références de documentation appropriées et des articles approfondis pour expliquer les fonctions spécifiques de Go.

Une option est A Tour of Go. Le didacticiel interactif permet aux étudiants d’exécuter des exemples Go juste à côté des instructions, mettant rapidement les leçons en pratique. Ce didacticiel propose des exercices qui mettent les apprenants au défi de créer une fonction ou de résoudre un problème à l’aide des fonctionnalités expliquées dans les leçons précédentes. Pour compléter ces exercices, les étudiants doivent appliquer de nouveaux concepts et démontrer une compréhension plus approfondie que simplement avoir lu et exécuté les exemples fournis.

Pourquoi apprendre Go ?

Go offre un éventail d’avantages spécifiques par rapport aux autres langages de programmation. Pour commencer, les goroutines et les canaux Go prennent en charge la simultanéité dans les programmes Go. À l’aide d’une goroutine, les programmes peuvent exécuter plusieurs fonctions en arrière-plan pendant que le déroulement du programme se poursuit normalement. Comparé à JavaScript, qui exécute des fonctions simultanément par nature, il est plus facile d’utiliser, de lire et d’écrire du code simultané avec Go, car les goroutines définissent explicitement les fonctions qui s’exécuteront simultanément.

Les canaux Go sont une structure de données permettant aux goroutines de communiquer efficacement entre elles, malgré leur fonctionnement asynchrone les uns avec les autres et avec le reste du flux de programme normal. Les canaux Go bloquent les opérations dans une goroutine jusqu’à ce que les données soient envoyées ou reçues. Cela permet aux administrateurs informatiques d’effectuer des opérations “en arrière-plan” dans une goroutine jusqu’à ce qu’une opération soit terminée dans un programme ou une autre goroutine.

Parce que Go est un langage fortement typé, il a une longueur d’avance sur des langages comme Python, qui peuvent parfois être difficiles à lire en raison de la prise en charge de variables et de fonctions typées dynamiquement.

Les figures 1 et 2 comparent deux fonctions dans Python et Go, montrant les différences de lisibilité.

Figure 1. Exemple de fonction en Python.
Capture d'écran du code de fonction dans Go
Figure 2. Exemple de fonction dans Go.

Python est facile à écrire, car les codeurs peuvent omettre les types spécifiques des arguments X et y, mais appeler les fonctions est un peu plus compliqué. Un utilisateur pourrait appeler addNumbers avec deux chaînes et il serait toujours valide, renvoyant une concaténation des deux chaînes fournies. Ce comportement indéterminé basé sur les types d’arguments peut compliquer la lecture de certains codes Python.

Dans Go, les utilisateurs doivent fournir des types pour les arguments, ainsi qu’un type de retour pour la fonction. Cette approche permet de comprendre rapidement que les arguments passés au addNumbers fonction dans Go sont des nombres entiers.

Alors que certains langages ne proposent qu’un langage de programmation sans prise en charge intégrée de la gestion des packages ou des bibliothèques de test, Go est beaucoup plus généreux. Go est livré avec un outil de ligne de commande qui permet aux utilisateurs de créer, tester, empaqueter et installer des programmes Go. Plutôt que de s’appuyer sur des outils tiers pour prendre en charge des actions courantes, telles que le téléchargement de dépendances pour un projet ou l’exécution de tests sur du code, l’outil de ligne de commande Go prend en charge toutes ces actions. L’outil de ligne de commande Go propose même un analyseur de code statique, qui s’exécute avec le gras sous-commande, pour rechercher les erreurs potentielles dans le code.

Aller exemple

En commençant par une fonction main mal formatée, comme le montre la figure 3, en exécutant la aller fmt La commande ajustera automatiquement les espaces et les nouvelles lignes.

Capture d'écran d'une fonction principale mal formatée dans Go
Figure 3. La fonction main avant d’exécuter la commande ‘go fmt’.

Après avoir exécuté le aller fmt commande, les espaces et les lignes s’ajusteront pour ressembler à la figure 4.

Capture d'écran du nouveau format de la fonction principale dans Go
Figure 4. La fonction main après l’exécution de ‘go fmt’.

Combinez ceci avec un script CI pour exécuter aller fmt chaque fois qu’un développeur pousse du code pour appliquer la propreté et la lisibilité dans tous les fichiers Go d’un projet.

Go a de nombreux conforts matériels pour aider les développeurs à écrire du code de qualité. Choisissez Go pour un projet où la vitesse, la simultanéité et l’expérience globale des développeurs sont prioritaires. Avec des conventions pour prendre en charge un code lisible, une documentation complète et un outil de ligne de commande inclus, Go présente de nombreux avantages par rapport aux autres langages modernes.

Leave a Comment

Your email address will not be published.