Golang
Prérequis :
TBD à rendre propre.
On suppose que vous connaissez le python et la programmation objet. Pour l'instant juste des notes de lectures.
-
installation :
- Macos : https://formulae.brew.sh/formula/go
- Windows : https://winstall.app/apps/GoLang.Go
- Linux :
sudo apt-get update && sudo apt-get -y install golang-go- https://go.dev/wiki/Ubuntu
- par défaut : https://go.dev/doc/install
-
vscode :
- plugin de go : https://marketplace.visualstudio.com/items?itemName=golang.Go
- changer des paramètres sinon c'est trop énervant. Aller dans la palette de commande (affichage > palette de commande) puis tapez
preferences: Open User Settings (JSON). Ajoutez les paramètres suivant pour go :
"gopls": { "ui.semanticTokens": true }, "[go]": { "editor.formatOnSave": true, "editor.codeActionsOnSave": { "source.organizeImports": false } -
Faire le tuto : https://go.dev/doc/tutorial/getting-started. Il vous apprendra à :
- écrire du code
- faire un module
- importer un module
-
Faire le go tour https://go.dev/tour/. Base du langage
-
Faire un cours de go venant de python. Pourquoi ne pas utiliser les videos suivantes comme base :
-
Dépendances :
- https://go.dev/doc/modules/managing-source
- https://go.dev/doc/modules/layout
- https://go.dev/doc/modules/managing-dependencies
- Modules standards : https://pkg.go.dev/std
- tests :
- TDD avec go : https://quii.gitbook.io/learn-go-with-tests
- prendre la version anglaise. La française est truffée de fautes et la traduction est souvent bancale
- le début est facile. La fin est trop dure et spécifique
- il faudrait reprendre le début avec les ajouts de la lib de test (coverage, exemple, etc) dans un tuto.
- specs. Très utiles. Ca vaut vraiment le coup de les lire :
- modules : https://go.dev/ref/mod
- langage : https://go.dev/ref/spec
- Basé sur des manipulations de structures de données. Fait pour être simple à lire. Pas d'héritage (comme tout les nouveaux langages), mais les https://gobyexample.com/struct-embedding permettent d'en garder le bénéfice sans les problèmes.https://www.youtube.com/watch?v=6Vt0xvaDs4I
- interface = pointeur. Comme en python. Est-ce copié ?
TBD go + webassembly ? https://go.dev/wiki/WebAssembly, https://go.dev/blog/wasmexport et https://golangbot.com/webassembly-using-go/
Test
go test .go test . -v
Exemples
Benchmark
go test ./graph -bench=./graph
Coverage
> go test ./graph -cover -v
https://www.youtube.com/watch?v=3ilxk24hzyA
Fuzztest
TBD