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.

  1. https://go.dev/doc/

  2. installation :

    1. Macos : https://formulae.brew.sh/formula/go
    2. Windows : https://winstall.app/apps/GoLang.Go
    3. Linux :
      1. sudo apt-get update && sudo apt-get -y install golang-go
      2. https://go.dev/wiki/Ubuntu
    4. par défaut : https://go.dev/doc/install
  3. vscode :

    1. plugin de go : https://marketplace.visualstudio.com/items?itemName=golang.Go
    2. 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
    }
    
  4. Faire le tuto : https://go.dev/doc/tutorial/getting-started. Il vous apprendra à :

    • écrire du code
    • faire un module
    • importer un module
  5. Faire le go tour https://go.dev/tour/. Base du langage

  6. Faire un cours de go venant de python. Pourquoi ne pas utiliser les videos suivantes comme base :

  7. https://go.dev/doc/effective_go

  8. https://gobyexample.com/

  9. Dépendances :

  1. Modules standards : https://pkg.go.dev/std
  2. tests :
  3. TDD avec go : https://quii.gitbook.io/learn-go-with-tests
    1. prendre la version anglaise. La française est truffée de fautes et la traduction est souvent bancale
    2. le début est facile. La fin est trop dure et spécifique
    3. il faudrait reprendre le début avec les ajouts de la lib de test (coverage, exemple, etc) dans un tuto.
  4. specs. Très utiles. Ca vaut vraiment le coup de les lire :

TBD go + webassembly ? https://go.dev/wiki/WebAssembly, https://go.dev/blog/wasmexport et https://golangbot.com/webassembly-using-go/

Test

Exemples

Benchmark

go test ./graph -bench=./graph

Coverage

> go test ./graph -cover -v 

https://www.youtube.com/watch?v=3ilxk24hzyA

Fuzztest

TBD

Testify