Go¶
Langage moderne conçu chez Google par Rob Pike, Ken Thompson et Robert Griesemer, Go résout les problèmes de compilation lente et de concurrence difficile hérités du C++. Sa simplicité, sa performance et son modèle de goroutines en font un choix de référence pour le cloud et les CLI.
graph LR
A["Histoire"] --> B["Frameworks"]
B --> C["Exemples"]
C --> D["Tests"]
D --> E["Construction"]
E --> F["Bonnes pratiques"]
F --> G["Ecosysteme"] Ce que vous allez apprendre¶
À la fin de ce tutoriel, vous serez capable de :
- Situer Go dans son contexte historique, de sa création chez Google (2009) à l'introduction des generics
- Choisir un framework adapté (Gin, Echo, Fiber) ou utiliser net/http standard
- Implémenter une API REST CRUD avec Gin + GORM et des outils CLI avec Cobra
- Mettre en place des tests avec le package testing natif, testify et le fuzzing
- Construire et distribuer des binaires avec la cross-compilation et GoReleaser
- Appliquer les recommandations Effective Go et éviter les anti-patterns courants
Parcours¶
| Section | Contenu |
|---|---|
| Histoire | Création chez Google (2009), Go 1.0 (2012), generics (1.18), évolution |
| Frameworks courants | Comparatif Gin, Echo, Fiber, Chi, net/http standard (Go 1.22), Cobra CLI, gRPC-Go |
| Exemples d'implementation | API REST CRUD avec Gin + GORM, outil CLI multi-commandes avec Cobra, worker pool et goroutines |
| Tests | Package testing natif, table-driven tests, httptest, testify, benchmarks, fuzzing natif, coverage |
| Construction & packaging | Go modules, cross-compilation GOOS/GOARCH, build tags, ldflags, Docker scratch/distroless, GoReleaser |
| Bonnes pratiques | Effective Go, gofmt, interfaces implicites, error wrapping, anti-patterns (goroutine leaks, init abuse), pprof |
| Ecosysteme | VS Code + gopls, GoLand, golangci-lint, staticcheck, govulncheck, Delve, pprof, fgprof |