Formation Go

Notée : (127)*

Découvrez Go / Golang, le langage moderne et performant créé par Google

Prix (Formation inter-entreprise)

1800€ HT / personne

Durée

3 jours

Dates

Nous pouvons organiser des sessions à d'autres dates ou dans d'autres villes (Bordeaux, Lille, Lyon, Marseille, Montpellier, Nantes, Nice, Paris, Strasbourg, Toulouse...)

Durant cette formation Go, vous apprendrez à développer une application avec Go et à la tester. (La formation vient d'être mise à jour pour Go 1.18.)

Simple, performant, minimaliste, favorisant la productivité... Le langage de programmation Go (aussi appelé Golang) ne manque pas d'atouts. Ce n'est donc pas étonnant qu'il soit le moteur de technologies telles que Docker, Kubernetes, Terraform, et qu'il soit devenu, en dix courtes années, un langage incontournable pour le développement backend d'applications Web.

Cette formation Go s'adresse à des développeur·ses ayant déjà de l'expérience en développement backend souhaitant se lancer dans le développement en Go.

À l'issue de cette formation Go, vous repartirez avec le code source du projet développé lors de ces trois jours, ainsi que la solution du formateur (sur GitHub), et l'envie —on l'espère— d'utiliser Go dans vos projets actuels et futurs !

Envie de passer au niveau supérieur ?

Jetez un œil à la formation Go Avancé animée par Julien Cretel.
Vous y verrez comment bien tester vos applications en Go, améliorer les performances de vos applications et bien les sécuriser.

Covid-19: Nous restons ouverts. Cette formation est disponible à distance.
🇺🇸 This training is also available in English

Les objectifs

  • Acquérir les bases de développement en Go (v1.18)
  • Reconnaître les cas où Go est, ou non, adapté à vos besoins
  • Réaliser un mini-projet sur trois jours : app Web permettant de vérifier la validité et la disponibilité d'un nom d'utilisateur/utilisatrice sur plusieurs réseaux sociaux (Twitter, GitHub, etc.)

Pré-requis

  • Une expérience d'au moins un an dans un autre langage de programmation (JavaScript, PHP, Python, Ruby, C++, Java, Haskell, etc.)
  • Des bases en anglais technique
  • Ordinateur portable à apporter

Le programme de la formation Go

Jour 1

Préambule
  • Présentations
  • namecheck : notre projet "fil rouge"
  • La genèse de Go
  • Tour d'horizon du langage
  • Orientation objet et aspects fonctionnels
  • La toolchain Go
  • Le playground Go
Premiers pas en Go
  • Hello World
  • Compilation, cross-compilation, exécution
  • Initialisation d'un module
  • Mots-clés et noms pré-déclarés
  • Commentaires
  • Imports
  • Documentation des packages
  • Tour d'horizon des types
  • Valeur zéro d'un type
  • Comparabilité d'un type
  • Déclaration de type
  • Déclaration de variables
  • Adressabilité
  • Pointeurs
  • Constantes
  • Génération de constantes avec iota
  • Énumérations
Structures de contrôle
  • Alternative if else
  • Alternative switch
  • Tagless switch : une alternative aux chaînes if/else
  • Boucles contrôlées par une condition
  • Mots-clés break et continue ; étiquettes (labels)
  • Boucles infinies
  • Boucles contrôlées par un compte
  • Boucles for-range
Fonctions
  • Appels de fonctions
  • Stratégie d'évaluation des arguments
  • Déclaration de fonctions
  • Résultats multiples
  • Résultats nommés
  • Paramètres variadiques
  • Récursion
  • Fonctions anonymes
  • Fermetures (closures)

Mise en pratique :
- Validation d'un nom d'utilisateur/utilisatrice Twitter (1/2)

Gestion des erreurs
  • Les erreurs sont des valeurs comme les autres
  • Ignorez les cas d'échec à vos risques et périls !
  • Le type error
  • Idiome : traitement du cas d'échec en premier
  • Line of sight
  • Différents traitements d'erreur
  • Création de valeurs de type error
  • Paniques
  • Utilisez panic avec parcimonie

Mise en pratique :
- Validation d'un nom d'utilisateur/utilisatrice Twitter (2/2)

Création et organisation de packages
  • Deux types de packages : bibliothèques et exécutables
  • Les fichiers sources d'un package
  • Bonnes pratiques de nommage
  • Cohésion
  • Encapsulation
  • Subpackages
  • Contrainte sur le graphe des imports : aucun cycle autorisé
  • Bonnes pratiques pour éviter les cycles de dépendances
  • Un bon package ne panique pas après initialisation

Mise en pratique :
- Création d'un package spécifique à Twitter

Tests unitaires
  • Tour d'horizon du package testing
  • Fichiers de tests
  • Approches "boîte blanche" et "boîte noire"
  • Fonctions de tests
  • Exécution de tests
  • Analyse de couverture de code

Mises en pratique :
-Validation d'un nom d'utilisateur/utilisatrice GitHub
-Écriture et exécution de tests unitaires

Client HTTP
  • Tour d'horizon du package net/http
  • Requêtes HTTP simples

Mise en pratique :
-Vérification de la disponibilité d'un nom d'utilisateur/utilisatrice sur GitHub

Réclamation de ressources
  • Le mot-clé defer
  • Un écueil courant

Mise en pratique :
- Vérification de la disponibilité d'un nom d'utilisateur/utilisatrice sur Twitter

Tableaux
  • Déclaration
  • Indexation d'un tableau
  • Itération sur un tableau
  • Valeur zéro
  • Un type inflexible et peu utilisé directement
Slices
  • Une vue redimensionnable d'un tableau
  • Déclaration : littéraux et fonction make
  • Valeur zéro
  • Sous le capot d'une slice
  • Pourquoi préférer les slices aux tableaux
  • Incomparabilité des slices
  • Indexation d'une slice
  • Slicing operator
  • Itération sur une slice
  • La fonction append
  • Aliasing

Mises en pratique :
-Récupération du nom à tester via un argument de ligne de commande
-Réduction de la duplication de code dans les tests grâce à des table-driven subtests

Jour 2

Tableaux associatifs
  • Valeur zéro
  • Incomparabilité des maps
  • Déclaration de maps avec la fonction make
  • Restriction sur le type des clés
  • Indexation d'une map
  • Ajout d'un couple clé-valeur
  • Elimination d'un couple clé-valeur
  • Itération sur une map
  • Implémentation d'un ensemble mathématique
  • Quelques écueils courants
Structures
  • Déclaration
  • Syntaxes d'instanciation
  • Syntaxe d'accès aux champs d'une structure
  • Valeur zéro
  • Comparabilité des structures
  • Structures nommées et anonymes
  • Encapsulation
  • Structures opaques
  • Champs anonymes
  • La structure vide
  • Struct field tags
  • Un aperçu des types et fonctions génériques

Mises en pratique :
-Concept d'une type représentant un arbre binaire
-Déclaration de types dédiés à Twitter et GitHub

Méthodes
  • Déclaration
  • Récepteur d'une méthode
  • Conventions de nommage
  • Récepteur : valeur ou pointeur ?
  • Ensemble des méthodes d'un type
  • Sucre syntactique
  • Rendez la valeur zéro utile
  • Composition facile grâce au struct embedding

Mises en pratique :
-Déclaration de méthodes sur le type représentant un arbre binaire
-Déclaration de méthodes sur les types dédiés à Twitter et GitHub

Interfaces
  • Un type défini par les méthodes requises
  • Satisfaction implicite des interfaces
  • Gardez vos interfaces petites
  • Composition d'interfaces
  • Quelques interfaces notables
  • Sous le capot d'une interface
  • Un écueil courant : interfaces et nil
  • Programming to an interface
  • Ne demandez pas plus que nécessaire
  • Usage des interfaces pour les doublures de tests (mock, stub, etc.)

Mises en pratique :
-Déclaration d'interfaces pour la validation et la vérification de disponibilité d'une nom d'utilisateur/utilisatrice
-Déclaration de méthodes sur les types dédiés à la vérification sur Twitter et GitHub
-Simplification du code existant grâce aux interfaces
-Création d'un mock pour le client HTTP

Concurrence
  • Définition
  • Le besoin de concurrence
  • Concurrence != parallélisme
Goroutines
  • Une sorte de thread "poids plume"
  • Ordonnanceur
  • Le mot-clé go
  • La fonction main n'attend pas
  • Wait groups
  • Fuite de goroutines
  • Situations de compétition
  • Détection statique et dynamique de situations de compétition
  • Résolution d'une situation de compétition

Mise en pratique :
- Vérification concurrente d'un nom d'utilisateur/utilisatrice sur de multiples réseaux sociaux

Jour 3

Channels
  • Ne communiquez pas en partageant de la mémoire ; partagez la mémoire en communiquant !
  • Convention de nommage
  • Des valeurs à part entière
  • Valeur zéro
  • Initialisation de channels avec la fonction make
  • Capacité d'un channel
  • L'importance de bien choisir la capacité des channels
  • Envoi d'une valeur sur un channel
  • Réception d'une valeur d'un channel
  • Résoudre l'ambiguïté à la réception
  • Fermeture d'un channel
  • Pourquoi fermer un channel
  • Application d'une boucle for-range sur un channel
  • Restriction du mode d'opération d'un channel

Mises en pratique :
-Résolution d'un interblocage
-Envoi puis agrégation des résultats au sein de la fonction main

Serveur HTTP
  • Serveur "Hello World"
  • Handlers HTTP
  • Encodage JSON avec le package encoding/json

Mise en pratique :
- Transformation de l'outil de ligne de commande en serveur HTTP

Le mot clé select
  • Une sorte de switch pour la con
  • Annulation de goroutines
  • Utilisation du package contexte

Mises en pratique :
-Utilisation de select pour forcer l'échec à la première erreur reçue
-Rendre une fonction annulable
-Débogage d'une simple simulation de ping-pong

Gestion de dépendances tierces
  • Installer une dépendance tierce avec go get
  • Garanties d'intégrité grâce au fichier go.sum
  • Nettoyer son fichier go.mod

Mise en pratique :
-Utilisation d'un routeur HTTP tiers

Exclusions mutuelles
  • Communiquer en partageant de la mémoire
  • Le type sync.Mutex

Mise en pratique :
- Utilisation d'un mutex pour calcul de statistiques de l'utilisation du serveur

Discussion ouverte

Télécharger le programme

Le(s) formateur(s)

Julien Cretel

Julien Cretel

Julien est développeur et chercheur en sécurité indépendant. Go, sécurité Web, bug bounty hunting, programmation fonctionnelle, technologies serverless... Julien a plusieurs amours, mais le langage Go tient une place particulière dans son coeur et est devenu son outil de choix pour le backend Web. Il a un blog principalement dédié à Go et la sécurité informatique disponible sur https://jub0bs.com.

Voir son profil détaillé

A propos de Human Coders

Human Coders c'est un centre de formation pour développeurs avec :

  • une certification Qualiopi, indispensable pour que vous puissiez obtenir des aides au financement via votre OPCO
  • de nombreux clients qui nous font confiance depuis des années
  • un manifeste pour garantir des formations à taille humaine, des formateurs passionnés, de véritables workshops...
  • 81 formations au catalogue, 1318 sessions depuis nos débuts en 2012 avec une moyenne de satisfaction de 4,6/5
  • la possibilité de vous proposer un accompagnement personnalisé ou du conseil après la formation

31 témoignages

Très agréable formation avec un formateur passionné par le langage. J'ai beaucoup apprécié le temps qu'il a pris pour répondre aux questions lors de la formation et même pendant les pauses.

Alexandre ROUSSEL

Ayant déjà utilisé Go, j'avais des attentes bien précises sur les concepts qui me manquaient, la formation a parfaitement répondu a mes attentes, et le fonctionnement en petit commité permets des échanges nombreux et interressants avec le formateur.

Ulrich GIRAUD
Pôle Emploi

formation très complète julien prend le temps de répondre à toutes nos interrogations

Marc-Antoine BECU
OVH

bon atmosphère et bon rythme personne n'est laissé à la traîne les exos sont intéressants et bien expliqués. Les difficultés sont bien abordées et la compréhension en est aisé. il y a beaucoup de doc, ce qui va me permettre de les revoir plus tard

Pierre-Yves VERDON
OVH

Très cohérent et pertinent comme formation! Très apprécié !

Maxime CLERMONT
OVH

J'ai bien apprécié la pédagogie de Julien et le fait qu'il y avait un projet sur lequel nous étions focalisé tout au long de la formation. Le mix entre théorie et pratique aide beaucoup à concrétiser directement les concepts du langage. Merci à Julien pour ces 3 jours

Antoine PEREIRA
OVH

Excellente maîtrise du programme, ouvert aux questions, bonne ambiance.

Steven Hamonou
OVH

Très bonne formation, bien complète. Le formateur est clair et précis

Sylvain GAUNET

Formation qui prend les bases de Go jusqu'à des utilisations concrètes.

Lucas GRANET
OVH

Formation très intéressante pour mettre le pied à l'étrier, je recommande tout de même d'avoir un peu joué avec Go avant cette formation pour éviter de perdre trop de temps.

Sébastien JARDIN
OVH

Formateur et formation très agréables. Précieux conseilles distillés tout le long de la formation

Romain CHEREAU
OVH

Super formation pour débuter en Go.

Pierre-Yves JOUREL
OVH

Très bonne formation, formateur à l'écoute, prêt à interrompre son programme pour nous aider à résoudre nos problématiques, super top !

Adrien GILLES-LAGOUGE
OVH

Très pro. Format en petit comité très sympa et efficace ainsi que le fait de mettre en pratique immédiatement les notions.

Guillaume Delabre
OVH

Très bonne formation pour débuter en go

Olivier Blondeau
OVH

Une expérience en Go permet de mieux comprendre les choses complexes

Francois THAREAU

Très bonne formation Go et de bon niveau malgré son niveau "beginners"

Vincent PHARABOT
Dassault Systèmes

Julien est un très bon formation. La progression de l'apprentissage se reflète bien dans l'exemple pratique à coder.

Guillaume AUBERTIN
Dassault Systèmes

Les concepts fondamentaux du Go ont été abordés et c'est exactement ce que je recherchais. Et comme le Go est un langage avec des semantiques puissantes et parfois contre-intuitives, je suis d'accord qu'i faut une (parfaite ?) maitrise d'un langage comme C++ ou Java pour en apprecier la beauté.

Hassan OUBENSAID
Dassault Systèmes

Super formateur go, Julien est très pédagogue et nous transmet très bien sa passion du langage Go

Damien CHESNEAU
Dassault Systèmes

Une formation au langage Go très utile par son côté interactif avec le formateur, qui permet de compléter efficacement ce qui peut être appris en lisant des documentations.

Alexandre VERMEERBERGEN
Dassault Systèmes

Merci au formateur pour sa bonne humeur et don savoir faire, pendant ces 3 jours qui ont permis d'appréhender le langage et d'en apercevoir les possibilités. Maintenant il faut se mettre au travail pour que la formation soit utile

Damien CAVAGNINI
OVH

Excellent formateur. Pédagogue et patient. Contenu parfaitement adapté. Doc simples et lisibles.

Jonathan De Timmerman
OVH

Formateur pédagogue très gentil.

Nassima MALOUM

Très bonne formation qui pose les bases de Go. Avoir parcouru le gotour avant est un plus mais non nécessaire. Le formateur est très pédagogue et prend bien le temps de répondre aux questions. A la fin de la formation vous n’aurez qu'une envie en savoir plus au sujet du Go :)

Jérôme BONNAMY

Très bonne formation en petit comité, cela change des concurrents.

Didier STEGER
Lagardère Active Corporate

Une formation en petit comité qui favorise les échanges. A la fois technique et théorique. Avec une théorie appliquée techniquement. Un formateur (Julien) qui connaît son sujet et bon pédagogue.

Sébastien KRAFFE

Julien est passionné par ce qu'il fait. Il est toujours plus agréable d'avoir un professionnel ayant une forte expérience pour nous accompagner dans nos débuts d'un langage. Très bon contact humain.

Vincent FEBVRE
Cadoles

Très bonne formation avec un bon formateur, le rythme est bon et les exercices concrets

Blaise CAVESTRI
LBC France

Bien qu'éloigné du développement depuis très longtemps, j'ai trouvé cette formation très bien faite et très intéressante.

Richard LANDY

Super formation en petit comité, ça permet d'avoir du temps pour des questions et avancer à son rythme

Romain BAILLY
Conserto

Besoin d'aide ?

Vous souhaitez discuter avec nous à propos de votre projet de formation ?
Vous voulez plus d'information sur une formation ou notre fonctionnement ?


Rappel Email

Nos forces

  • Des formations à taille humaine
  • Des formateurs passionnés
  • Des véritables workshop
Accéder au Manifeste

Nos clients

Formation Go

Notée : (127)*

Découvrez Go / Golang, le langage moderne et performant créé par Google

Durant cette formation Go, vous apprendrez à développer une application avec Go et à la tester. (La formation vient d'être mise à jour pour Go 1.18.)

Simple, performant, minimaliste, favorisant la productivité... Le langage de programmation Go (aussi appelé Golang) ne manque pas d'atouts. Ce n'est donc pas étonnant qu'il soit le moteur de technologies telles que Docker, Kubernetes, Terraform, et qu'il soit devenu, en dix courtes années, un langage incontournable pour le développement backend d'applications Web.

Cette formation Go s'adresse à des développeur·ses ayant déjà de l'expérience en développement backend souhaitant se lancer dans le développement en Go.

À l'issue de cette formation Go, vous repartirez avec le code source du projet développé lors de ces trois jours, ainsi que la solution du formateur (sur GitHub), et l'envie —on l'espère— d'utiliser Go dans vos projets actuels et futurs !

Envie de passer au niveau supérieur ?

Jetez un œil à la formation Go Avancé animée par Julien Cretel.
Vous y verrez comment bien tester vos applications en Go, améliorer les performances de vos applications et bien les sécuriser.

Covid-19: Nous restons ouverts. Cette formation est disponible à distance.
🇺🇸 This training is also available in English

Les objectifs

  • Acquérir les bases de développement en Go (v1.18)
  • Reconnaître les cas où Go est, ou non, adapté à vos besoins
  • Réaliser un mini-projet sur trois jours : app Web permettant de vérifier la validité et la disponibilité d'un nom d'utilisateur/utilisatrice sur plusieurs réseaux sociaux (Twitter, GitHub, etc.)

Pré-requis

  • Une expérience d'au moins un an dans un autre langage de programmation (JavaScript, PHP, Python, Ruby, C++, Java, Haskell, etc.)
  • Des bases en anglais technique
  • Ordinateur portable à apporter

Le programme de la formation Go

Jour 1

Préambule
  • Présentations
  • namecheck : notre projet "fil rouge"
  • La genèse de Go
  • Tour d'horizon du langage
  • Orientation objet et aspects fonctionnels
  • La toolchain Go
  • Le playground Go
Premiers pas en Go
  • Hello World
  • Compilation, cross-compilation, exécution
  • Initialisation d'un module
  • Mots-clés et noms pré-déclarés
  • Commentaires
  • Imports
  • Documentation des packages
  • Tour d'horizon des types
  • Valeur zéro d'un type
  • Comparabilité d'un type
  • Déclaration de type
  • Déclaration de variables
  • Adressabilité
  • Pointeurs
  • Constantes
  • Génération de constantes avec iota
  • Énumérations
Structures de contrôle
  • Alternative if else
  • Alternative switch
  • Tagless switch : une alternative aux chaînes if/else
  • Boucles contrôlées par une condition
  • Mots-clés break et continue ; étiquettes (labels)
  • Boucles infinies
  • Boucles contrôlées par un compte
  • Boucles for-range
Fonctions
  • Appels de fonctions
  • Stratégie d'évaluation des arguments
  • Déclaration de fonctions
  • Résultats multiples
  • Résultats nommés
  • Paramètres variadiques
  • Récursion
  • Fonctions anonymes
  • Fermetures (closures)

Mise en pratique :
- Validation d'un nom d'utilisateur/utilisatrice Twitter (1/2)

Gestion des erreurs
  • Les erreurs sont des valeurs comme les autres
  • Ignorez les cas d'échec à vos risques et périls !
  • Le type error
  • Idiome : traitement du cas d'échec en premier
  • Line of sight
  • Différents traitements d'erreur
  • Création de valeurs de type error
  • Paniques
  • Utilisez panic avec parcimonie

Mise en pratique :
- Validation d'un nom d'utilisateur/utilisatrice Twitter (2/2)

Création et organisation de packages
  • Deux types de packages : bibliothèques et exécutables
  • Les fichiers sources d'un package
  • Bonnes pratiques de nommage
  • Cohésion
  • Encapsulation
  • Subpackages
  • Contrainte sur le graphe des imports : aucun cycle autorisé
  • Bonnes pratiques pour éviter les cycles de dépendances
  • Un bon package ne panique pas après initialisation

Mise en pratique :
- Création d'un package spécifique à Twitter

Tests unitaires
  • Tour d'horizon du package testing
  • Fichiers de tests
  • Approches "boîte blanche" et "boîte noire"
  • Fonctions de tests
  • Exécution de tests
  • Analyse de couverture de code

Mises en pratique :
-Validation d'un nom d'utilisateur/utilisatrice GitHub
-Écriture et exécution de tests unitaires

Client HTTP
  • Tour d'horizon du package net/http
  • Requêtes HTTP simples

Mise en pratique :
-Vérification de la disponibilité d'un nom d'utilisateur/utilisatrice sur GitHub

Réclamation de ressources
  • Le mot-clé defer
  • Un écueil courant

Mise en pratique :
- Vérification de la disponibilité d'un nom d'utilisateur/utilisatrice sur Twitter

Tableaux
  • Déclaration
  • Indexation d'un tableau
  • Itération sur un tableau
  • Valeur zéro
  • Un type inflexible et peu utilisé directement
Slices
  • Une vue redimensionnable d'un tableau
  • Déclaration : littéraux et fonction make
  • Valeur zéro
  • Sous le capot d'une slice
  • Pourquoi préférer les slices aux tableaux
  • Incomparabilité des slices
  • Indexation d'une slice
  • Slicing operator
  • Itération sur une slice
  • La fonction append
  • Aliasing

Mises en pratique :
-Récupération du nom à tester via un argument de ligne de commande
-Réduction de la duplication de code dans les tests grâce à des table-driven subtests

Jour 2

Tableaux associatifs
  • Valeur zéro
  • Incomparabilité des maps
  • Déclaration de maps avec la fonction make
  • Restriction sur le type des clés
  • Indexation d'une map
  • Ajout d'un couple clé-valeur
  • Elimination d'un couple clé-valeur
  • Itération sur une map
  • Implémentation d'un ensemble mathématique
  • Quelques écueils courants
Structures
  • Déclaration
  • Syntaxes d'instanciation
  • Syntaxe d'accès aux champs d'une structure
  • Valeur zéro
  • Comparabilité des structures
  • Structures nommées et anonymes
  • Encapsulation
  • Structures opaques
  • Champs anonymes
  • La structure vide
  • Struct field tags
  • Un aperçu des types et fonctions génériques

Mises en pratique :
-Concept d'une type représentant un arbre binaire
-Déclaration de types dédiés à Twitter et GitHub

Méthodes
  • Déclaration
  • Récepteur d'une méthode
  • Conventions de nommage
  • Récepteur : valeur ou pointeur ?
  • Ensemble des méthodes d'un type
  • Sucre syntactique
  • Rendez la valeur zéro utile
  • Composition facile grâce au struct embedding

Mises en pratique :
-Déclaration de méthodes sur le type représentant un arbre binaire
-Déclaration de méthodes sur les types dédiés à Twitter et GitHub

Interfaces
  • Un type défini par les méthodes requises
  • Satisfaction implicite des interfaces
  • Gardez vos interfaces petites
  • Composition d'interfaces
  • Quelques interfaces notables
  • Sous le capot d'une interface
  • Un écueil courant : interfaces et nil
  • Programming to an interface
  • Ne demandez pas plus que nécessaire
  • Usage des interfaces pour les doublures de tests (mock, stub, etc.)

Mises en pratique :
-Déclaration d'interfaces pour la validation et la vérification de disponibilité d'une nom d'utilisateur/utilisatrice
-Déclaration de méthodes sur les types dédiés à la vérification sur Twitter et GitHub
-Simplification du code existant grâce aux interfaces
-Création d'un mock pour le client HTTP

Concurrence
  • Définition
  • Le besoin de concurrence
  • Concurrence != parallélisme
Goroutines
  • Une sorte de thread "poids plume"
  • Ordonnanceur
  • Le mot-clé go
  • La fonction main n'attend pas
  • Wait groups
  • Fuite de goroutines
  • Situations de compétition
  • Détection statique et dynamique de situations de compétition
  • Résolution d'une situation de compétition

Mise en pratique :
- Vérification concurrente d'un nom d'utilisateur/utilisatrice sur de multiples réseaux sociaux

Jour 3

Channels
  • Ne communiquez pas en partageant de la mémoire ; partagez la mémoire en communiquant !
  • Convention de nommage
  • Des valeurs à part entière
  • Valeur zéro
  • Initialisation de channels avec la fonction make
  • Capacité d'un channel
  • L'importance de bien choisir la capacité des channels
  • Envoi d'une valeur sur un channel
  • Réception d'une valeur d'un channel
  • Résoudre l'ambiguïté à la réception
  • Fermeture d'un channel
  • Pourquoi fermer un channel
  • Application d'une boucle for-range sur un channel
  • Restriction du mode d'opération d'un channel

Mises en pratique :
-Résolution d'un interblocage
-Envoi puis agrégation des résultats au sein de la fonction main

Serveur HTTP
  • Serveur "Hello World"
  • Handlers HTTP
  • Encodage JSON avec le package encoding/json

Mise en pratique :
- Transformation de l'outil de ligne de commande en serveur HTTP

Le mot clé select
  • Une sorte de switch pour la con
  • Annulation de goroutines
  • Utilisation du package contexte

Mises en pratique :
-Utilisation de select pour forcer l'échec à la première erreur reçue
-Rendre une fonction annulable
-Débogage d'une simple simulation de ping-pong

Gestion de dépendances tierces
  • Installer une dépendance tierce avec go get
  • Garanties d'intégrité grâce au fichier go.sum
  • Nettoyer son fichier go.mod

Mise en pratique :
-Utilisation d'un routeur HTTP tiers

Exclusions mutuelles
  • Communiquer en partageant de la mémoire
  • Le type sync.Mutex

Mise en pratique :
- Utilisation d'un mutex pour calcul de statistiques de l'utilisation du serveur

Discussion ouverte

Télécharger le programme

Le(s) formateur(s)

Julien Cretel

Julien Cretel

Julien est développeur et chercheur en sécurité indépendant. Go, sécurité Web, bug bounty hunting, programmation fonctionnelle, technologies serverless... Julien a plusieurs amours, mais le langage Go tient une place particulière dans son coeur et est devenu son outil de choix pour le backend Web. Il a un blog principalement dédié à Go et la sécurité informatique disponible sur https://jub0bs.com.

Voir son profil détaillé

A propos de Human Coders

Human Coders c'est un centre de formation pour développeurs avec :

  • une certification Qualiopi, indispensable pour que vous puissiez obtenir des aides au financement via votre OPCO
  • de nombreux clients qui nous font confiance depuis des années
  • un manifeste pour garantir des formations à taille humaine, des formateurs passionnés, de véritables workshops...
  • 81 formations au catalogue, 1318 sessions depuis nos débuts en 2012 avec une moyenne de satisfaction de 4,6/5
  • la possibilité de vous proposer un accompagnement personnalisé ou du conseil après la formation

31 témoignages

Très agréable formation avec un formateur passionné par le langage. J'ai beaucoup apprécié le temps qu'il a pris pour répondre aux questions lors de la formation et même pendant les pauses.

Alexandre ROUSSEL

Ayant déjà utilisé Go, j'avais des attentes bien précises sur les concepts qui me manquaient, la formation a parfaitement répondu a mes attentes, et le fonctionnement en petit commité permets des échanges nombreux et interressants avec le formateur.

Ulrich GIRAUD
Pôle Emploi

formation très complète julien prend le temps de répondre à toutes nos interrogations

Marc-Antoine BECU
OVH

bon atmosphère et bon rythme personne n'est laissé à la traîne les exos sont intéressants et bien expliqués. Les difficultés sont bien abordées et la compréhension en est aisé. il y a beaucoup de doc, ce qui va me permettre de les revoir plus tard

Pierre-Yves VERDON
OVH

Très cohérent et pertinent comme formation! Très apprécié !

Maxime CLERMONT
OVH

J'ai bien apprécié la pédagogie de Julien et le fait qu'il y avait un projet sur lequel nous étions focalisé tout au long de la formation. Le mix entre théorie et pratique aide beaucoup à concrétiser directement les concepts du langage. Merci à Julien pour ces 3 jours

Antoine PEREIRA
OVH

Excellente maîtrise du programme, ouvert aux questions, bonne ambiance.

Steven Hamonou
OVH

Très bonne formation, bien complète. Le formateur est clair et précis

Sylvain GAUNET

Formation qui prend les bases de Go jusqu'à des utilisations concrètes.

Lucas GRANET
OVH

Formation très intéressante pour mettre le pied à l'étrier, je recommande tout de même d'avoir un peu joué avec Go avant cette formation pour éviter de perdre trop de temps.

Sébastien JARDIN
OVH

Formateur et formation très agréables. Précieux conseilles distillés tout le long de la formation

Romain CHEREAU
OVH

Super formation pour débuter en Go.

Pierre-Yves JOUREL
OVH

Très bonne formation, formateur à l'écoute, prêt à interrompre son programme pour nous aider à résoudre nos problématiques, super top !

Adrien GILLES-LAGOUGE
OVH

Très pro. Format en petit comité très sympa et efficace ainsi que le fait de mettre en pratique immédiatement les notions.

Guillaume Delabre
OVH

Très bonne formation pour débuter en go

Olivier Blondeau
OVH

Une expérience en Go permet de mieux comprendre les choses complexes

Francois THAREAU

Très bonne formation Go et de bon niveau malgré son niveau "beginners"

Vincent PHARABOT
Dassault Systèmes

Julien est un très bon formation. La progression de l'apprentissage se reflète bien dans l'exemple pratique à coder.

Guillaume AUBERTIN
Dassault Systèmes

Les concepts fondamentaux du Go ont été abordés et c'est exactement ce que je recherchais. Et comme le Go est un langage avec des semantiques puissantes et parfois contre-intuitives, je suis d'accord qu'i faut une (parfaite ?) maitrise d'un langage comme C++ ou Java pour en apprecier la beauté.

Hassan OUBENSAID
Dassault Systèmes

Super formateur go, Julien est très pédagogue et nous transmet très bien sa passion du langage Go

Damien CHESNEAU
Dassault Systèmes

Une formation au langage Go très utile par son côté interactif avec le formateur, qui permet de compléter efficacement ce qui peut être appris en lisant des documentations.

Alexandre VERMEERBERGEN
Dassault Systèmes

Merci au formateur pour sa bonne humeur et don savoir faire, pendant ces 3 jours qui ont permis d'appréhender le langage et d'en apercevoir les possibilités. Maintenant il faut se mettre au travail pour que la formation soit utile

Damien CAVAGNINI
OVH

Excellent formateur. Pédagogue et patient. Contenu parfaitement adapté. Doc simples et lisibles.

Jonathan De Timmerman
OVH

Formateur pédagogue très gentil.

Nassima MALOUM

Très bonne formation qui pose les bases de Go. Avoir parcouru le gotour avant est un plus mais non nécessaire. Le formateur est très pédagogue et prend bien le temps de répondre aux questions. A la fin de la formation vous n’aurez qu'une envie en savoir plus au sujet du Go :)

Jérôme BONNAMY

Très bonne formation en petit comité, cela change des concurrents.

Didier STEGER
Lagardère Active Corporate

Une formation en petit comité qui favorise les échanges. A la fois technique et théorique. Avec une théorie appliquée techniquement. Un formateur (Julien) qui connaît son sujet et bon pédagogue.

Sébastien KRAFFE

Julien est passionné par ce qu'il fait. Il est toujours plus agréable d'avoir un professionnel ayant une forte expérience pour nous accompagner dans nos débuts d'un langage. Très bon contact humain.

Vincent FEBVRE
Cadoles

Très bonne formation avec un bon formateur, le rythme est bon et les exercices concrets

Blaise CAVESTRI
LBC France

Bien qu'éloigné du développement depuis très longtemps, j'ai trouvé cette formation très bien faite et très intéressante.

Richard LANDY

Super formation en petit comité, ça permet d'avoir du temps pour des questions et avancer à son rythme

Romain BAILLY
Conserto

* Nombre de personnes ayant répondu au questionnaire de satisfaction sur cette formation depuis 2012