Aller au contenu

Golang

Cross compilation

Goos + Goarch available on system: go tool dist list

Best practices

https://the-zen-of-go.netlify.com/

  • treat errors at the moment they occur, even if it's verbose

golang-standards/project-layout

  • cmd contains buildable binaries (main.go)
  • pkg contains reusable packages
  • tests are in the same directory as packages

Go vs C++

  • Golang est plus lent que C++ principalement à cause de l'overhead du GC.
  • Golang n'est pas compatible FIPS et son HTTP parser / TLS lib est moins bonne que BoringSSL

source

Gopath

  • par défaut dans ~/go.
  • Contient bin, src (résultat des go get) et pkg
  • go env GOPATH: permet de trouver son GOPATH

Modules

dans le répertoire du projet: go.mod / go.sum * go.sum et go.mod sont générés dans le projet et servent de lockfile * les modules gettés vont dans le cache des modules * Pour inspecter le code source: mieux vaut faire un git clone