Imprimé en N&B
Go (ou Golang) est un langage qui se veut simple. Cette simplicité est réelle au niveau syntaxique : peu de mots clés, pas d’héritage complexe, pas de généricité débridée. Pourtant, derrière cette façade épurée se cache un environnement d’exécution élaboré (le runtime) qui gère la concurrence, la mémoire et l’ordonnancement avec une efficacité que peu de langages à ramasse-miettes atteignent.
Ce livre est une exploration technique des mécanismes qui font fonctionner Go. Il vise à donner au lecteur les connaissances nécessaires pour prendre des décisions architecturales éclairées selon leurs contraintes : mémoire disponible, exigences de performance, nombre de connexions simultanées, latence acceptable, etc. L’accent est mis sur la théorie et la compréhension des mécanismes. Les exemples de code servent à illustrer les concepts, pas à fournir des solutions clés en main.
Les explications se basent principalement sur Go 1.26 et versions ultérieures.
Il s’adresse à des développeurs Go confirmés, tech leads et architectes backend.
Introduction
FONDEMENTS DU RUNTIME
1. Architecture et modèle de concurrence
2. Bootstrap du runtime et initialisation
3. Modèle mémoire de Go
4. Allocation et gestion de la mémoire
5. Garbage collector et récupération mémoire
6. Observabilité et optimisation mémoire
7. Architecture et ordonnancement
8. Composants du runtime et monitoring
9. Fondements des structures de données
TYPES ET STRUCTURES DE DONNÉES
10. Slices et arrays
11. Strings
12. Maps – tables de hachage internes
13. Interfaces et système de types
14. Types paramétrés : polymorphisme à la compilation
MÉCANISMES AVANCÉS DU LANGAGE
15. Switch et sélection de cas
16. Fonctions anonymes et closures
17. Defer : garanties d’exécution
18. Panic et Recover : gestion des conditions exceptionnelles
19. Itérateurs par fonction
20. Package unsafe : contourner la sécurité du type
21. Réflexion : introspection et manipulation dynamique
22. Compilation et optimisations
CONCURRENCE MAÎTRISÉE
23. Goroutines
24. Primitives de synchronisation
25. Fonctions avancées de synchronisation
26. Channels : communication et signaling
27. Outils pour la programmation concurrente
ANNEXES
Démonstrations techniques et benchmarks
Algorithmes
Glossaire