Golang
Le Go, ou Golang, est un language de programmation open source developpé par Google.
Environnement de développement
Installer l'executable go
via apt, chocolatey ou en téléchargeant le binaire depuis le site officiel.
Les premières commandes à tapper :
go mod init nom-de-mon-projet
go build hello.go # permet de compiler le code
go run hello.go # compile + run
Visual Studio
L'extension VSCode permet d'avoir a dispo toutes les commandes utiles du CLI go via la command palette CTRL + SHIFT + P
.
Coder en Go
Déclaration de package
Chaque programme démarre par un package declaration qui permet de spécifier au compilateur le type d'artefact que l'on souhaite produire, par exemple un executable avec package main
Import de package
Import de package ex: import "fmt"
et possibilité d'importer plusieurs package en avec une meme instruction (ici en aliasant les packages):
import (
f "fmt"
t "time"
)
Commentaires
On utilise les classiques //
pour un commentaire sur 1 ligne ou /* */
pour les commentaires multilignes.
De plus il est conseillé d'ajouter un commentaire de package, qui pourra etre extrait par Godoc.
Types et Variables
Named vs UnNamed
Les "chaines de caractères" ou les nombres sont appelés des literals et peuvent etre utilisés tel quel dans du code (sont donc en quelque sorte des unnamed values) pour des opérations (pour les nombres) ou des traitements.
Les named values d'un autre coté sont des constantes ou des variables :
const unTextQuelconque = "Hello toto !"
Les variables sont initialisées automatiquement : 0
, ""
ou false
Nombres
Les variables numériques peuvent etre catégorisé en : int
, float
, and complex
var uneVarNum uint8 // déclaration seule
uneVarNum = 10
uneAutreVarInt := 0 // déclaration et initialisation d'une variable avec inférence de type
var uneDerniereBool = true // autre syntaxe pour l'inference
var magicNum, powerLevel int32 // déclaration multiple
unTexte, unBooleen := "blah blah blah", true
Documentation en ligne
la commande go doc
permet d'obtenir de l'aide sur un package ou un membre d'un package:
go doc fmt # affichera l'intégralité de la doc du package fmt
go doc fmt.formatter # affichera la doc du type Formatter
Liens
- tuto CodeCademy sur et leurs cheat sheet
- la lib Playwright pour Go
- comparatif Rust vs Go
- la page officielle go.dev/learn avec des resources pour apprendre le go
Concernant le poid des binaires générés en Go
- une étude sur la taille du binaire compilé en go par un ingé de CockroachDB (par ex un simple Hello Wold pèse 1.8M !! ⚓)
- la doc officielle : [Why is my trivial program such a large binary](https://go.dev/doc/faq#Why_is_my_trivial_program_such_a_large_binary ?) qui propose de retirer les infos de debug pour un exécutable de production :
go build -ldflags=-w main.go
(réduit la taille de l'exé de 25% pour un Hello World)