Aller au contenu

000.000 Le langage Go#

010.000 Introduction, historique et installation de Go#

  • Historique et objectifs du langage
  • Comparaison de Go avec d'autres langages populaires (C, Python, Java, etc.)
  • Installation et configuration de l'environnement de développement

Travaux pratiques :

  • Installer Go et configurer l'environnement de développement
  • Créer un "Hello, World!" en Go, compiler, exécuter le programme

020.000 Syntaxe, variables, types de base et structures de contrôle#

  • Variables, constantes et déclarations
  • Types de données de base
  • Structures de contrôle (if, for, switch, defer)

Travaux pratiques :

  • Calculer la somme et la moyenne d'une liste de nombres
  • Créer un programme pour convertir des températures entre Celsius et Fahrenheit

030.000 Fonctions, méthodes, interfaces et gestion des erreurs#

  • Déclaration et utilisation de fonctions
  • Méthodes et interfaces
  • Gestion des erreurs et conventions

Travaux pratiques :

  • Implémenter une calculatrice avec des opérations personnalisées
  • Créer une bibliothèque pour lire et écrire des fichiers CSV avec une gestion d'erreurs robuste

040.000 Pointeurs, allocation de mémoire, structures et types composites#

  • Pointeurs et allocation de mémoire
  • Structures et méthodes
  • Tableaux, slices et maps

Travaux pratiques :

  • Créer une bibliothèque pour gérer des formes géométriques et calculer leurs aires
  • Créer un programme de gestion d'inventaire

050.000 Concurrence, goroutines et synchronisation#

  • Goroutines et concurrence
  • Canaux et communication entre goroutines
  • Patterns de concurrence et select

Travaux pratiques :

  • Calculer des factoriels en parallèle
  • Développer un système de files d'attente (queue) pour traiter des tâches en parallèle

060.000 Packages, modules et gestion des dépendances#

  • Création et utilisation de packages
  • Go modules et gestion des dépendances

Travaux pratiques :

  • Créer un package personnalisé
  • Utiliser un package externe dans un projet Go

070.000 Tests, benchmarks, profiling et documentation#

  • Tests unitaires et benchmarks
  • Profiling et optimisation
  • Documentation et commentaires

Travaux pratiques :

  • Écrire des tests unitaires pour une application de calculatrice
  • Analyser et optimiser les performances d'un programme

080.000 Programmation orientée réseau et développement d'applications web#

  • Client et serveur TCP/UDP
  • Création d'un serveur HTTP simple
  • Utilisation de gorilla/mux pour créer une API RESTful

Travaux pratiques :

  • Créer un serveur de chat simple avec TCP
  • Implémenter une API RESTful pour gérer une liste de tâches

090.000 Manipulation de données structurées et communication entre services#

  • Encodage et décodage JSON
  • Introduction à Google Protocol Buffers
  • Utilisation de golang/protobuf

Travaux pratiques :

  • Créer une API RESTful qui renvoie des données JSON
  • Implémenter un client et un serveur qui communiquent avec des messages protobuf

100.000 Accès aux bases de données et ORM#

  • Bases de données relationnelles et SQL
  • Introduction à GORM
  • Utilisation de jinzhu/gorm pour gérer les bases de données

Travaux pratiques :

  • Créer une application de gestion d'utilisateurs avec GORM et une base de données SQLite
  • Implémenter un système de gestion de stock avec GORM et une base de données PostgreSQL

110.000 Développement d'applications en ligne de commande#

  • Arguments et flags
  • Introduction à spf13/cobra
  • Utilisation de spf13/cobra pour créer des applications CLI

Travaux pratiques :

  • Créer une application CLI pour interagir avec une API RESTful
  • Développer un outil en ligne de commande pour analyser et traiter des fichiers CSV

120.000 Bonnes pratiques, empaquetage et déploiement#

  • Organisation du code et gestion des dépendances
  • Documentation et commentaires
  • Empaquetage et distribution d'applications Go

Travaux pratiques :

  • Organiser et documenter un projet Go existant
  • Compiler et distribuer une application Go en tant qu'exécutable statique

FIN.