
Formation Golang avancée
Faites passer votre expertise Go au niveau supérieur avec une exploration approfondie des mécanismes internes de l'exécution, de la concurrence avancée, des génériques et de la conception de services de production. Ce cours dote les développeurs expérimentés des connaissances bas niveau et des patrons éprouvés nécessaires pour construire des systèmes Go rapides, fiables et maintenables à grande échelle.
Ce que vous allez apprendre:
Maîtrisez le modèle mémoire de Go, les rouages internes du ramasse-miettes et l'analyse d'Échap pour écrire du code haute performance.
Implémentez des patrons de concurrence avancés incluant les regroupements de workers, les limiteurs de débit et l'annulation pilotée par le contexte.
Concevez des structures de données génériques et des API type-safe à l'aide de contraintes et d'unions d'interface.
Profilez et optimisez des applications Go à l'aide de pprof, de traces d'exécution et de techniques rigoureuses d'évaluation comparative.
Créez des services de production avec une journalisation structurée, une instrumentation OpenTelemetry et un arrêt gracieux.
Appliquez des techniques de programmation système avec unsafe, CGo et l'assembleur Go pour une intégration bas niveau.
Comment vous étudiez de façon pratique Formation Golang avancée
Comment vous pratiquez Formation Golang avancée
Pour vous, entreprise, qui souhaitez former votre équipe
Avec Dedika pour les entreprises, le cours inclut des exercices et des exemples adaptés à votre activité et aux besoins spécifiques de votre entreprise.
Contenu du cours
8 Chapitres • 36 LeçonsDurée entre 4 et 360 heures (vous décidez)
Chapitre 1MasquerCacher les détailsVoir les détailsExécution de Go et modèle mémoire
Exécution de Go et modèle mémoire
Leçon 1 • Présentation de l'architecture de l'exécution de Go
Examinez les composants centraux de l'exécution de Go : l'ordonnanceur, l'allocateur mémoire et le ramasse-miettes. Ce contexte sert de base à tous les sujets avancés du cours.
Leçon 2 • Fonctionnement interne du ramasse-miettes
Explorez le ramasse-miettes à trois couleurs de type « mark-and-sweep », les barrières d'écriture et la cadence du GC. Ces connaissances permettent un réglage ciblé des performances dans les chapitres suivants.
Leçon 3 • Fondamentaux du modèle mémoire de Go
Définissez la relation « se produit avant » et les garanties de synchronisation en Go. Des modèles mentaux corrects ici préviennent les courses de données dans les travaux ultérieurs sur la concurrence.
Leçon 4 • Allocation sur la pile et le tas
Distinguez la croissance de la pile, l'analyse d'échappement et les décisions d'allocation sur le tas prises par le compilateur. Comprendre les modèles d'allocation réduit la pression sur le GC.
Chapitre 2MasquerCacher les détailsVoir les détailsModèles de concurrence avancés
Modèles de concurrence avancés
Leçon 1 • Primitives de synchronisation en profondeur
Utilisez correctement sync.Mutex, RWMutex, WaitGroup, Once et les opérations atomiques en situation de contention. La sélection appropriée des primitives a un impact direct sur le débit.
Leçon 2 • Plongée dans l'ordonnanceur de goroutines
Analysez l'ordonnanceur M:N, le vol de travail et la préemption pour prédire le comportement des goroutines. Cela sous-tend la conception correcte des pipelines concurrents.
Leçon 3 • Modèles de concurrence avancés
Implémentez des sémaphores, des pools de workers, des limiteurs de débit et des errgroup pour une concurrence structurée. Ces modèles composent les primitives des sections précédentes.
Leçon 4 • Modèles de canaux et pièges
Concevez des pipelines, des modèles « fan-out », « fan-in » et « done-channel » à l'aide de canaux typés. Reconnaître les mauvais usages courants prévient les fuites de goroutines.
Leçon 5 • Package Context et annulation
Propagez les délais, les signaux d'annulation et les valeurs liées à la requête dans les arbres d'appels à l'aide du contexte. Ce modèle est essentiel pour la conception de services de production.
Chapitre 3MasquerCacher les détailsVoir les détailsGénériques et maîtrise du système de types
Génériques et maîtrise du système de types
Leçon 1 • Structures de données génériques
Construisez des piles, files d'attente, ensembles et cartes génériques avec une conception de contraintes correcte. Ces structures démontrent une réutilisation pratique dans des familles de types non apparentées.
Leçon 2 • Contraintes et unions d'interfaces
Définissez des contraintes précises à l'aide d'unions d'interfaces, de types sous-jacents et de comparable. Des contraintes strictes produisent des API génériques plus sûres et plus expressives.
Leçon 3 • Performances et limites des génériques
Analysez le « stenciling » de formes GC, le passage de dictionnaire et les compromis de monomorphisation. Connaître les limites évite les mauvais usages qui dégradent les performances d'exécution.
Leçon 4 • Syntaxe des génériques et paramètres de type
Déclarez des fonctions et des types génériques avec des paramètres de type et instanciez-les correctement. La maîtrise de la syntaxe est un prérequis pour tout travail de conception de contraintes.
Chapitre 4MasquerCacher les détailsVoir les détailsInterfaces, réflexion et répartition dynamique
Interfaces, réflexion et répartition dynamique
Leçon 1 • Réflexion avec le package reflect
Utilisez reflect.Type et reflect.Value pour inspecter et manipuler les types à l'exécution. La réflexion permet des frameworks génériques de sérialisation et d'injection de dépendances.
Leçon 2 • Génération de code comme alternative à la réflexion
Générez du code standard type-safe avec go generate et des outils basés sur l'AST pour remplacer la réflexion coûteuse. Le code généré offre une flexibilité comparable à la réflexion sans coût à l'exécution.
Leçon 3 • Fonctionnement interne des interfaces et disposition d'iface
Examinez les structures iface et eface, la mise en cache d'itab et les pièges des interfaces nil. La connaissance interne prévient les bogues subtils dans le code fortement basé sur les interfaces.
Leçon 4 • Architectures de plugins et d'extensions
Concevez des systèmes de plugins à l'aide d'interfaces, de registres de fonctions et du package plugin. Ces modèles permettent une extensibilité à l'exécution sans recompilation.
Chapitre 5MasquerCacher les détailsVoir les détailsProfilage des performances et optimisation
Profilage des performances et optimisation
Leçon 1 • Analyse comparative avec le package testing
Écrivez des benchmarks fiables en utilisant testing.B, les sous-benchmarks et benchstat pour une comparaison statistique. Une analyse comparative rigoureuse valide objectivement l'impact de l'optimisation.
Leçon 2 • Techniques d'optimisation mémoire
Réduisez les allocations à l'aide de sync.Pool, de l'alignement des champs de structure et de la pré-allocation de slices. Chaque technique réduit directement la fréquence du GC et les temps de pause.
Leçon 3 • Profilage avec pprof
Collectez les profils CPU, tas, goroutine et bloc à l'aide de pprof et interprétez les flame graphs. Le profilage est la première étape obligatoire avant toute tentative d'optimisation.
Leçon 4 • Traceur d'exécution et analyse de la latence
Utilisez le traceur d'exécution de l'exécution pour diagnostiquer la latence d'ordonnancement, les pauses du GC et le blocage des appels système. L'analyse des traces révèle les goulots d'étranglement de concurrence invisibles pour pprof.
Leçon 5 • Optimisations du processeur et du compilateur
Exploitez l'inlining, l'élimination des vérifications de bornes et les dispositions de données adaptées au SIMD pour l'efficacité du processeur. Les conseils au compilateur et les choix de disposition des données produisent des gains de débit mesurables.
Chapitre 6MasquerCacher les détailsVoir les détailsGestion avancée des erreurs et tests
Gestion avancée des erreurs et tests
Leçon 1 • Erreurs sentinelles et hiérarchies d'erreurs
Définissez des erreurs sentinelles au niveau du package et des hiérarchies d'erreurs typées pour des diagnostics spécifiques au domaine. Une taxonomie d'erreurs cohérente améliore l'ergonomie pour l'appelant dans les grandes bases de code.
Leçon 2 • Mocking, stubs et bouchons de test
Concevez des interfaces testables et injectez des mocks ou des stubs pour isoler les unités sous test. L'injection basée sur les interfaces permet des tests rapides et déterministes sans dépendances réelles.
Leçon 3 • Tests pilotés par les données et sous-tests
Structurez des suites de tests complètes avec des cas pilotés par des données et des sous-tests t.Run pour l'isolation. Cette approche fait évoluer la couverture des tests sans dupliquer la logique de configuration.
Leçon 4 • Encapsulation et désencapsulation d'erreurs
Utilisez fmt.Errorf avec %w, errors.Is et errors.As pour construire des chaînes d'erreurs inspectables. Les erreurs structurées permettent un traitement précis sans correspondance de chaînes.
Leçon 5 • Tests par fuzzing avec go test
Écrivez des cibles de fuzzing en utilisant le moteur de fuzzing natif pour découvrir les paniques de cas limites et les erreurs logiques. Le fuzzing complète les tests unitaires en explorant des espaces d'entrée inattendus.
Chapitre 7MasquerCacher les détailsVoir les détailsProgrammation système et CGo
Programmation système et CGo
Leçon 1 • Le package unsafe
Utilisez unsafe.Pointer, uintptr et Sizeof pour la manipulation mémoire bas niveau avec des règles de sécurité explicites. Les opérations unsafe sont nécessaires pour la sérialisation haute performance et les FFI.
Leçon 2 • Performances de CGo et alternatives
Mesurez la surcharge des appels CGo et évaluez les alternatives possibles : syscall, purego et bibliothèques partagées. Choisir la bonne stratégie FFI permet d'équilibrer performances, portabilité et sécurité.
Leçon 3 • Fondamentaux de CGo
Appelez des fonctions C depuis Go et exportez des fonctions Go vers C à l'aide de directives CGo et de correspondances de types. CGo permet l'intégration avec des bibliothèques C existantes et des API au niveau du système d'exploitation.
Leçon 4 • Écrire de l'assemblage Go
Réalisez des stubs d'assemblage Plan 9 pour les fonctions critiques afin de contourner les limitations du compilateur et d'accéder aux instructions du processeur. L'assemblage est le dernier recours après avoir épuisé les options d'optimisation du compilateur.
Chapitre 8MasquerCacher les détailsVoir les détailsConstruction de services de qualité production
Construction de services de qualité production
Leçon 1 • Arrêt gracieux et gestion des signaux
Implémentez des séquences d'arrêt sensibles aux signaux qui vident les requêtes en cours et libèrent proprement les ressources. Un arrêt gracieux évite les pertes de données et les erreurs de connexion lors des déploiements.
Leçon 2 • Métriques et tracing distribué
Instrumentez les services avec les métriques et les traces OpenTelemetry pour exposer la latence, les taux d'erreur et le débit. Les données d'instrumentation animent la surveillance des SLO et le diagnostic des incidents.
Leçon 3 • Modèles de résilience dans les services Go
Appliquez des disjoncteurs, des tentatives avec backoff et des cloisons étanches pour prévenir les défaillances en cascade. Ces modèles rendent les services auto-cicatrisants en cas de pannes partielles d'infrastructure.
Leçon 4 • Configuration et injection de dépendances
Gérez la configuration avec des variables d'environnement, des fichiers et une validation ; câblez les dépendances explicitement. Un câblage explicite améliore la testabilité et élimine l'état global caché.
Leçon 5 • Journalisation structurée et observabilité
Implémentez une journalisation structurée avec slog, des niveaux de journal et des champs contextuels pour une sortie analisable par machine. Les journaux structurés sont le fondement des pipelines d'observabilité en production.
Votre certificat valide de réussite
Ce cours est fait pour vous :
Ingénieurs backend : prêts à passer de l'écriture de Go à sa maîtrise approfondie.
Ingénieurs plateforme : ayant besoin d'une connaissance approfondie de Go pour construire des outils d'infrastructure fiables.
Développeurs seniors : souhaitant migrer depuis d'autres langages et combler des lacunes spécifiques à Go.
Ingénieurs de fiabilité de site : souhaitant diagnostiquer le comportement des services Go lors d'incidents de production.
Contributeurs open source : visant à travailler sur des projets Go critique en performances ou de niveau système.
Responsables techniques : chargés de définir les normes d'architecture Go au sein des équipes d'ingénierie.
Ce que disent nos élèves
Vos cours sont parfaits. J'ai acheté le forfait d'un an et j'ai enfin l'opportunité de suivre divers sujets qui m'intéressent sans avoir besoin de changer de plateforme... je vous remercie pour tout ce que vous faites, je vous ai déjà recommandés à d'autres personnes...

J'aime la façon dont les leçons vont droit au but et comment je peux changer de chapitres et passer le contenu dont je n'ai pas besoin.

J'aime le contenu et la façon dont les vidéos sont présentées et transcrites, ce qui accélère le processus !

La plateforme est rapide, simple à utiliser. La diversité du contenu et les vidéos complémentaires aident beaucoup dans l'apprentissage.

Formations principales
FAQ
Qui est Dedika ?
Le certificat est-il valable en France ?
Les cours sont-ils gratuits ?
Quelle est la charge de travail du cours ?
Comment sont les cours ?
Comment fonctionnent les cours ?
Quelle est la durée des cours ?
Quel est le coût ou le prix des cours ?
Qu'est-ce qu'un cours EAD ou en ligne et comment ça marche ?
Cours PDF




















