Go
Apprenez Go de bout en bout. Commencez par les packages, les variables et le flux de controle, puis approfondissez les structs, les interfaces, la concurrence, les tests, les serveurs HTTP, les bases de donnees, les generiques, le profilage et la mise en production de vrais binaires.
20 leçons, dans l’ordre
- 125 min
Bonjour, Go
Bienvenue. Si vous n'avez jamais écrit de code, vous êtes au bon endroit. Go est un langage de programmation, c'est-à-dire une façon de donner à un...
Package mainImportFunc mainFmt.PrintlnGo run - 225 min
Variables et types
Dans la leçon précédente, vous avez affiché un morceau de texte figé. Les vrais programmes ont besoin de retenir des choses qui changent : le nom...
Var declarationShort declaration :=IntFloat64StringBool+2 - 330 min
Structures de contrôle : if et for
Jusqu'ici, tous les programmes que vous avez écrits s'exécutent de haut en bas, une ligne après l'autre, sans le moindre choix en chemin. Les vrais...
IfElse ifElseFor loopFor as whileInfinite for+2 - 430 min
Fonctions
Tous les programmes que vous avez écrits jusqu'ici tenaient à l'intérieur de func main(). Ça suffit pour une douzaine de lignes, mais un vrai...
Func keywordParametersReturn valuesMultiple return valuesNamed return valuesBlank identifier - 535 min
Slices et maps
Jusqu'ici, chacune de vos variables ne contient qu'une seule valeur : un nom, un âge, un prix. Or, la plupart des problèmes réels portent sur un...
Slice literalAppendLenIndexingRangeMap literal+2 - 635 min
Structs et pointers
Toutes les variables écrites jusqu'ici dans ce cours contiennent une seule valeur isolée : un nombre, une chaîne, une slice. Or les données réelles...
Struct definitionField accessZero values for structsPointer types& and * operatorsPointer receivers vs value receivers+1 - 735 min
Methods et interfaces
La leçon précédente vous a appris à regrouper des champs liés dans une struct, mais une struct seule ne contient que des données, elle n'a aucun...
Method declarationReceiver typesPointer vs value receiversInterface definitionImplicit interface satisfactionSmall interfaces+1 - 835 min
Gestion des erreurs
Vous avez déjà tapé if err != nil plusieurs fois dans ce cours sans vous arrêter pour demander ce qu'est vraiment err ni d'où il vient. Les fonctions...
Error interfaceFmt.Errorf with %wErrors.IsErrors.AsCustom error typesPanic vs error+1 - 935 min
Modules et structure de projet
Tous les programmes que vous avez écrits dans ce cours tenaient dans un seul fichier, lançable d'une seule commande. Les vrais projets Go restent...
Go mod initGo.mod and go.sumImport pathsPackage vs moduleInternal/ folderCmd/ layout+1 - 1040 min
Petit projet final en ligne de commande
Jusqu'ici, tous les programmes que vous avez écrits avaient leurs entrées inscrites en dur dans le code source. Pour additionner d'autres nombres, il...
Os.ArgsStrconv.AtoiError handling with if err != nilOs.ExitGo buildPutting it together - 1140 min
Une visite de la bibliothèque standard
Dans l'apprentissage de n'importe quel langage, il arrive un moment où vous cessez de vous demander comment écrire une boucle et commencez à vous...
FmtStringsStrconvTimeOsBufio+1 - 1240 min
Tests et benchmarks
Vous avez écrit une fonction, lancé le programme, vu la bonne réponse, et vous êtes passé à autre chose. Une semaine plus tard, vous modifiez quelque...
Go testTesting.TTable-driven testsT.Run subtestsTesting.B benchmarks_test.go file naming+1 - 1340 min
Goroutines et channels
Votre programme doit télécharger vingt fichiers. Écrit de la manière ordinaire, il télécharge le premier, attend, télécharge le deuxième, attend, et...
The go keywordGoroutine lifetimeUnbuffered channelsBuffered channelsSend and receiveRange over channel+1 - 1445 min
Modèles de concurrence
Les goroutines et les canaux sont des matières premières, comme le bois et les vis. Savoir ce qu'ils sont ne vous dit pas comment fabriquer une...
Select statementContext.Context for cancellationSync.WaitGroupSync.MutexWorker pool patternFan-out fan-in idea - 1535 min
Generics
Vous écrivez une fonction qui trouve le plus grand nombre dans une slice de int. Puis il vous en faut une pour float64, alors vous la copiez et vous...
Type parameters with [T any]ConstraintsComparableTilde approximation ~intGeneric Map and FilterWhen generics help, when they do not - 1645 min
Serveurs HTTP
Dans la plupart des langages, "écrire un service web" commence par le choix d'un framework, et ce choix compte, parce que le framework décide du...
Net/httpHttp.HandleFuncHttp.ServerJSON responsesRequest routingMiddleware via http.Handler wrapping+1 - 1745 min
Bases de données avec database/sql
Tous les programmes que vous avez écrits jusqu'ici oublient tout dès qu'ils se terminent. C'est acceptable pour un outil qui transforme son entrée...
Database/sql packageDriver importsSql.Open and sql.DB poolExec vs Query vs QueryRowPrepared statementsScanning rows+1 - 1840 min
Performance et profilage
Un jour, quelqu'un dit que le service est lent, vous ouvrez le code et repérez aussitôt la boucle qui doit en être responsable. Vous la réécrivez,...
Go test -benchPprof CPU and heap profilesEscape analysis with -gcflags=-mAvoiding unnecessary allocationsPreallocating slicesSync.Pool intuition - 1940 min
Patrons de conception en Go
Les programmes grossissent. Un fichier qui avait tout son sens à deux cents lignes devient un endroit où une petite modification casse quelque chose...
Functional options patternRepository patternDependency injection via interfacesContext propagation through call stacksConstructor functions - 2045 min
Déploiement et production
Il y a un fossé entre un programme qui tourne sur votre portable et un programme que vous êtes prêt à laisser tourner pendant que vous dormez. Le...
CGO_ENABLED=0 static binariesCross-compile with GOOS and GOARCHGraceful shutdown with http.Server and signal.NotifyContextMinimal Dockerfile with scratch or distrolessReading config from environment variables
Apprenez Go dans votre langue
Chaque leçon, quiz et réponse du tuteur s’affiche dans votre langue. Le tuteur IA répond dans la langue que vous utilisez.
Roles that use Go
See how hiring teams interview engineers on Go, in production-like environments.
Backend Engineer (Go, Rust, Java)
Hire backend engineers in real services with real databases, real concurrency and real latency budgets. Live or take-home, fully recorded.
See the interviewDistributed Systems Engineer
Hire distributed systems engineers in workspaces with real Kafka, real consensus and real partition tooling. Live or take-home, fully recorded.
See the interviewPlatform Engineer
Hire platform engineers who reduce friction for every team. Real golden-path templates, real internal CLIs, real service onboarding flows. We record every step.
See the interview