Le Langage de Programmation Go

Aleksandr Shitik
Aleksandr Shitik

J’écris mes propres articles et livres, et je fais des critiques de films et de livres. Expert en cosmologie et astronomie, informatique, productivité et planification.

Le Langage de Programmation Go
Alan A. A. Donovan, Brian W. Kernighan
Genres: Programmation
Année de publication: 2016
Année de lecture: 2020
Ma note: Maximale
Nombre de lectures: 1
Nombre total de pages: 436
Résumé (pages): 0
Langue originale de la publication: Anglais
Traductions dans d'autres langues: Russe, Portugais, Chinois

Tout d'abord, je vais brièvement analyser la structure du livre chapitre par chapitre, puis rédiger une conclusion et énumérer les points forts et les points faibles du livre.

Manuel

Ce chapitre introductif traite de l'utilisation du langage Go. Il aborde l'origine du langage, présente un exemple de "hello world", explique l'exécution et la compilation, le concept de modules (paquets), la déclaration de fonctions, le formatage du code, le traitement des arguments de la ligne de commande, la déclaration de variables et une introduction à la boucle for. Il couvre également la recherche de chaînes répétées de différentes manières, le travail avec des images et des URL, et même la création d'un serveur web simple.

Structure du programme

Ce chapitre traite des mots réservés, de la nomination des variables, des fonctions et des constantes. Il explique comment déclarer des variables (avec var, const, type, func), ce qui peut être omis et comment regrouper plusieurs déclarations. Les pointeurs et la création de variables avec la fonction new sont examinés en détail. Le chapitre aborde également la durée de vie et la portée des variables, ainsi que l'affectation de valeurs. L'utilisation de paquets externes, l'importation et l'encapsulation des données sont également présentées.

Types de données fondamentaux

Ce chapitre examine les nombres (entiers, à virgule flottante), les opérateurs binaires et bit à bit et leur priorité, la comparaison des nombres. Il décrit l'utilisation des nombres complexes en Go, des valeurs booléennes. Les chaînes de caractères, les séquences de contrôle et les littéraux de chaînes sont abordés, ainsi que les runes pour travailler avec les caractères Unicode. La conversion des chaînes en nombres et vice versa est également traitée. Les constantes et les pseudo-enums sont également examinés.

Types de données composites

Ce chapitre traite de types de données plus complexes : les tableaux (séquences de longueur fixe), les slices (séquences dynamiques), les maps (collections de paires clé-valeur) et les structures. Il examine la création, l'initialisation, la comparaison et les fonctions de base pour travailler avec les tableaux et les slices. Plusieurs exemples d'utilisation des maps sont fournis. Les structures sont examinées en détail, y compris le travail avec JSON et l'utilisation des fonctions Marshal et Unmarshal. Enfin, un exemple de travail avec HTML en Go est présenté.

Fonctions

Ce chapitre assez détaillé traite des fonctions. Il commence par des notions théoriques, puis présente un exemple de traitement récursif de HTML. Il aborde le retour de plusieurs valeurs et l'une des concepts clés du langage : la vérification des erreurs avec if err != nil. Les fonctions anonymes et les fonctions variadiques (acceptant un nombre variable de paramètres) sont également examinées en détail.

Méthodes

Comme Go ne dispose pas du modèle classique de la POO, le travail avec les objets se fait via des structures et des méthodes (fonctions associées aux structures). Ce chapitre aborde les concepts d'encapsulation et montre comment une même tâche peut être réalisée à la fois avec une fonction ordinaire et une méthode.

Interfaces

Ce chapitre traite de la création et de l'utilisation des interfaces. Il commence par une partie théorique expliquant le but des interfaces et les méthodes pour les implémenter. Les interfaces standard pour le tri, le travail avec les serveurs web et le traitement des erreurs sont examinées. Les sujets de déclaration de types et de gestion des situations d'urgence sont également abordés. Si un exemple avec JSON a été présenté précédemment, ici, le travail avec XML est examiné.

Goroutines et canaux. Concurrence

Deux chapitres sont consacrés à la programmation concurrente. Le premier est plus théorique et présente des exemples, y compris le concept fondamental de Go : les canaux (y compris les canaux tamponnés et unidirectionnels) et la construction select.

Le deuxième chapitre contient moins d'exemples, mais met l'accent sur les problèmes pouvant survenir lors du travail en parallèle (par exemple, les conditions de course) et les méthodes pour les résoudre (en utilisant sync.Mutex et sync.RWMutex).

Paquets et outils Go

Bien que le concept de paquets et de modules ait déjà été introduit, ce chapitre y consacre plus d'attention. Il examine en détail les importations et souligne la possibilité d'utiliser des bibliothèques tierces, et pas seulement celles standard.

La deuxième partie du chapitre est consacrée aux outils Go : compilation, installation de paquets et de dépendances, tests et bien plus encore. L'organisation de l'espace de travail et la structure des répertoires sont également décrites.

Tests

L'un des derniers chapitres est consacré aux tests de code avec les outils Go (go test), brièvement mentionnés dans le chapitre précédent. Des bibliothèques tierces pour les tests sont également mentionnées. Pour le reste, le chapitre est typique : pourquoi les tests sont nécessaires, comment bien et mal les écrire, ce que sont les tests fragiles, la couverture du code par les tests, etc.

Réflexion et programmation bas niveau

Les deux derniers chapitres, les plus courts, sont destinés aux développeurs plus expérimentés. Le premier traite de la réflexion : par exemple, si vous devez créer votre propre analyseur statique ou un outil d'analyse de code. Le second traite de la programmation bas niveau : lorsque les capacités de Go ne suffisent pas et qu'il est nécessaire de faire appel à des bibliothèques C ou d'utiliser des appels système.

Conclusion

À qui ce livre convient-il ?

Il convient à ceux qui souhaitent découvrir le langage à partir de zéro, ainsi qu'à ceux qui travaillent déjà avec Go depuis plusieurs années et souhaitent systématiser, consolider et approfondir leurs connaissances.

Avantages :

  • Lecture facile et compréhensible.
  • Structure claire : chaque chapitre suivant poursuit logiquement le précédent.
  • De nombreux exemples de code.
  • Des exercices pratiques à la fin de chaque chapitre.

Inconvénients :

  • Il n'est pas certain que le livre ait été mis à jour ; certaines nouvelles fonctionnalités du langage, comme les generics, ne sont pas couvertes.
  • Le livre compte plus de 400 pages, ce qui peut être un obstacle pour ceux qui ne sont pas habitués à lire de la littérature technique de cette ampleur.
Вверх