Advanced Search
Search Results
118 total results found
Introduction
Qui a fait le Go ? Go (ou Golang) est un langage de programmation open source assez jeune. Il a été développé en 2007 par Robert Griesemer, Rob Pike et Ken Thompson qui travaillent aujourd'hui chez Google. Le langage Go est officiellement lancé en novembr...
Les bases
Clean architecture Go Le playground https://play.golang.org/ Bonjour monde package main import "fmt" func main() { fmt.Println("Hello, World!") } Les types Langage fortement typé, avec possibilités de faire de l'inférence. On peut dé...
Tests & Boucles
Les combinaisons et opérateurs booléens Comparaisons == != < > >= >= Opérateurs booléens && || ! If age := 10 if age > 10 { // something } Conditions alternatives age := 10 if age > 10 { // something } else if a > 5 { // s...
Tableaux
Tableaux à taille fixe Définition Simplement Un tableau à taille fixe est une séquence d'éléments d'une taille définie Tout est alloué d'un seul bloc ➡️ les cases sont contiguës en mémoire Le premier index démarre à 0. La taille est définitive, pour agr...
Les fonctions
func printInfoNoParam() { fmt.Printf("Name=%s, age=%d, email=%s\n", "Bob", 10, "bob@golang.org") } func printInfoParams(name string, age int, email string) { fmt.Printf("Name=%s, age=%d, email=%s\n", name, age, email) } func avg(x, y float64) float64 { re...
Range
C'est la continuité du for, il permet d'itérer sur une collection de donnée Syntaxe for <index>, <value> := <dataset> { //code } Exemple names := []string{"Bob", "Alice", "Bobette", "John"} for i, n := range names { fmt.Printf("Username=%s (index...
Gestion d'erreurs
Gestion d'erreurs dans les langages Il y a plusieurs stratégies possibles : Code d'Erreurs Exceptions Pattern Matching ... Go et le retour multiple En Go, nous allons exploiter le retour multiple des fonctions pour gérer nos erreurs Exemple classiq...
Fichiers
Pour manipuler un fichier en Go, il existe plusieurs librairies permettant différentes actions. io/ioutil C'est sans doute l'approche la plus simple pour manipuler un fichier. Elle permet de directement lire un répertoire ou le contenu d'un fichier, et même d'...
Defer
Repousser l'exécution d'une instruction Cas d'utilisation Dans l'exemple si dessous func main() { f := os.OpenFile("foo.txt") if condition1 { return // Oops...! pas de close ici! } // code f.Close() } Le f.close() peut être très éloigné dan...
Kata Find and Replace
Énoncé Programme qui trouve et remplace un mot par un autre dans un fichier. Exemple Remplacer le mot Go par Python Source: wikigo.txt Résultat Go was conceived in 2007 to improve programming productivity at Google Python was conceived in ...
Structures & Pointeurs
Définition SimplementType personnalisé représentant une collection de champs Syntaxe type <NomStruct> struct { var1 int var2 string var3 float64 } Exemple type User struct { Name string Email string Age int } Déclaration Il y a 3 types...
Maps
Définition Structure associant des clés à des valeurs On peut mettre en clé tout ce qui est comparable (on peut mettre une structure comme clé) Syntaxe La syntaxe “longue” de déclaration d’une map est la suivante : var m map[KeyType]ValueType -----------...
Introduction à Gin
Repo github des exercices Présentation de Gin Gin est un framework web HTTP écrit en Go. Il dispose d'une API de type Martini, mais avec des performances jusqu'à 40 fois plus rapides que Martini. Si vous avez besoin de performances époustouflantes, procurez...
Installation
Dans le cadre de cette explication, j’utiliserais l’IDE Goland, donc il se peut que certaines choses soient simplifiés par l’IDE, et d’autres que je doive faire spécifiquement par rapport à cet IDE Nouveau projet Tout d’abord, nous allons créer un nouveau pr...
Live reload
Recompiler notre code à chaque fois que l’on change notre code, arrêter le serveur et le relancer… Tout ça est long et fastidieux ! Surtout pendant le développement ! En nodeJS certains se souviendrons de nodemon qui permettait de surveiller les changements ...
Restful API Server
Simple Server GitHub repo Pour utiliser Gin, il suffit d’importer github.com/gin-gonic/gin au niveau de son fichier main et de créer une variable qui va contenir notre fameux routeur. package main import "github.com/gin-gonic/gin" func main() { rout...
Static server
GitHub repo Dans certains cas, on souhaite juste héberger un site statique. On pourrait se tourner vers apache ou nginx mais ce n’est pas ce que nous recherchons 😉 Il est possible assez facilement grâce à Gin de rendre accessible notre site statique. Pour ...
Reverse proxy
Reverse proxy simple GitHub repo Le reverse proxy est quelque chose de majoritairement utilisé aujourd'hui. Dans beaucoup de cas d'utilisation, on utilise des outils tels que Nginx, Apache, Caddy uniquement pour faire du reverse proxy. Mais avec Gin, on pe...
GTK
Présentation Nous allons voir comment développer une application GTK en C à l'aide de CMake ou Makefile, que ce soit sur Linux, et même Windows (avec MSYS2 et même WSL !) GTK (The GIMP Toolkit, anciennement GTK+) est un ensemble de bibliothèques logicielles,...
Les bases
Architecture Réseau Docker Networking Compose Swarm