Apprenez toutes les commandes Go pour développer des applications performantes. Guide complet incluant compilation, testing et déploiement.
go version
Affiche la version de Go installée
-m-v
go env
Affiche les variables d'environnement Go
-json-u-w
go env GOPATH
Affiche la valeur de GOPATH
go env GOROOT
Affiche la valeur de GOROOT
go help
Affiche l'aide générale de Go
go help <commande>
Affiche l'aide d'une commande spécifique
go mod init
Initialise un nouveau module Go (crée go.mod)
module-path
go mod init github.com/user/project
Initialise un module avec un chemin spécifique
go mod tidy
Nettoie et met à jour go.mod (ajoute les dépendances manquantes, supprime les inutilisées)
-v-e-go-compat
go mod download
Télécharge les dépendances dans le cache local
-x-json
go mod vendor
Copie les dépendances dans le dossier vendor/
-v-e
go mod verify
Vérifie l'intégrité des dépendances téléchargées
go mod why
Explique pourquoi un module est nécessaire
-m-vendor
go mod graph
Affiche le graphe des dépendances
go mod edit
Édite go.mod via ligne de commande
-module-require-droprequire-exclude-dropexclude-replace-dropreplace-retract-go-print-fmt-json
go mod edit -replace=old@v1.0.0=new@v1.1.0
Remplace une dépendance par une autre
-replace
go mod edit -require=github.com/gin-gonic/gin@v1.9.0
Ajoute une dépendance à go.mod
-require
go get
Ajoute une dépendance au module courant
-u-t-d-v-x-insecure
go get github.com/gin-gonic/gin
Ajoute la dépendance Gin
@version-u
go get github.com/gin-gonic/gin@v1.9.0
Ajoute une version spécifique de Gin
@latest@master
go get -u ./...
Met à jour toutes les dépendances
-u-t
go get -u github.com/gin-gonic/gin
Met à jour une dépendance spécifique
-u
go get -d ./...
Télécharge les dépendances sans les installer
-d
go install
Compile et installe un package
-v-x-race-ldflags-tags-trimpath-buildmode
go install ./...
Installe tous les packages du module
go install github.com/air-verse/air@latest
Installe un outil Go (air pour hot reload)
@latest@version
go build
Compile le package courant
-o-v-x-race-ldflags-tags-trimpath-buildmode-mod-p-work-a-n-gcflags-asmflags-compiler-installsuffix
go build -o monapp
Compile avec un nom de sortie personnalisé
-o
go build -o monapp ./cmd/api
Compile un package spécifique
-o
go build -v ./...
Compile tous les packages avec logs verbeux
-v
go build -race
Compile avec détection de race conditions
-race
go build -ldflags="-s -w"
Compile en supprimant les symboles de debug (binaire plus petit)
-ldflags
go build -ldflags="-X main.version=1.0.0"
Injection de variables lors de la compilation
-ldflags
go build -tags prod
Compile avec des tags de build conditionnels
-tags
go build -trimpath
Supprime les chemins absolus du binaire (build reproductible)
-trimpath
GOOS=linux GOARCH=amd64 go build
Cross-compilation pour Linux 64-bit
GOOS=windows GOARCH=amd64 go build -o monapp.exe
Cross-compilation pour Windows 64-bit
-o
GOOS=darwin GOARCH=arm64 go build
Cross-compilation pour macOS Apple Silicon
go run
Compile et exécute un programme Go
-race-tags-ldflags-exec
go run main.go
Exécute le fichier main.go
go run ./cmd/api
Exécute le package api
go run -race main.go
Exécute avec détection de race conditions
-race
go test
Lance les tests du package courant
-v-race-cover-coverprofile-bench-benchmem-timeout-short-run-count-parallel-cpu-list-json-failfast-shuffle
go test ./...
Lance tous les tests du module
-v-race-cover
go test -v
Lance les tests en mode verbeux
-v
go test -race
Lance les tests avec détection de race conditions
-race
go test -cover
Affiche le pourcentage de couverture de code
-cover
go test -coverprofile=coverage.out
Génère un fichier de profil de couverture
-coverprofile
go tool cover -html=coverage.out
Affiche la couverture dans le navigateur
-html-func
go tool cover -func=coverage.out
Affiche la couverture par fonction
-func
go test -run TestNom
Lance un test spécifique par nom
-run
go test -run TestUser/Create
Lance un sous-test spécifique
-run
go test -bench=.
Lance tous les benchmarks
-bench-benchmem-benchtime-count
go test -bench=BenchmarkNom -benchmem
Lance un benchmark spécifique avec mémoire
-bench-benchmem
go test -timeout 30s
Définit un timeout pour les tests
-timeout
go test -short
Ignore les tests longs
-short
go test -count=1
Désactive le cache des tests
-count
go test -shuffle=on
Exécute les tests dans un ordre aléatoire
-shuffle
go test -json > report.json
Génère un rapport au format JSON
-json
go fmt
Formate le code source Go
-n-x-mod
go fmt ./...
Formate tous les fichiers du module
go vet
Analyse statique du code pour détecter des erreurs
-all-asmdecl-assign-atomic-bool-buildtag-cgocall-composites-copylocks-httpresponse-loopclosure-lostcancel-nilfunc-printf-shift-stdmethods-structtag-tests-unmarshal-unreachable-unsafeptr-unusedresult
go vet ./...
Analyse tous les packages du module
go clean
Nettoie les fichiers de build
-i-r-n-x-cache-testcache-modcache-fuzzcache
go clean -cache
Nettoie le cache de build Go
-cache
go clean -testcache
Nettoie le cache des tests
-testcache
go clean -modcache
Nettoie le cache des modules (dépendances)
-modcache
go doc
Affiche la documentation d'un package
-all-c-cmd-short-src-u
go doc fmt
Affiche la documentation du package fmt
-all-src
go doc fmt.Println
Affiche la documentation de la fonction Println
go list
Liste les packages
-f-json-m-u-versions-deps-test-e-find-export
go list ./...
Liste tous les packages du module
go list -m all
Liste tous les modules dépendants
-m
go list -m -u all
Liste les modules avec mises à jour disponibles
-m-u
go list -m -versions github.com/gin-gonic/gin
Liste les versions disponibles d'un module
-m-versions
go list -json
Affiche les informations en JSON
-json
go work init
Initialise un workspace Go (go.work)
module1module2
go work use
Ajoute un module au workspace
-r./dir
go work use ./module1 ./module2
Ajoute plusieurs modules au workspace
go work sync
Synchronise le workspace avec go.mod
go work edit
Édite go.work via ligne de commande
-fmt-use-dropuse-replace-dropreplace-go
go generate
Exécute les directives //go:generate
-n-x-v-run
go generate ./...
Exécute les générateurs pour tous les packages
go tool
Exécute un outil Go
-n
go tool compile
Compile un fichier Go (bas niveau)
-o-I-D-S-V
go tool pprof
Analyse les profils de performance
-http-web-text-tree-peek-list-disasm-callgrind-dot-svg-png
go tool pprof -http=:8080 profile.out
Lance l'interface web pprof
-http
go tool trace trace.out
Analyse une trace d'exécution
-http
go tool objdump
Désassemble un fichier objet
-s-S
go tool nm
Liste les symboles d'un fichier objet
-size-sort-type
go test -fuzz=FuzzNom
Lance le fuzzing sur une fonction
-fuzz-fuzztime-fuzzminimizetime
go test -fuzz=FuzzNom -fuzztime=30s
Lance le fuzzing pendant 30 secondes
-fuzz-fuzztime
go test -bench=. -benchmem -cpuprofile=cpu.out -memprofile=mem.out
Génère des profils CPU et mémoire
-cpuprofile-memprofile-blockprofile-mutexprofile
gofmt -w .
Formate tous les fichiers Go (commande alternative)
-w-l-d-s-r
goimports -w .
Formate et organise les imports
-w-l-local
go install golang.org/x/tools/cmd/goimports@latest
Installe goimports
@latest
golint ./...
Linter Go (déprécié, utiliser staticcheck)
-set_exit_status-min_confidence
staticcheck ./...
Analyse statique avancée avec staticcheck
-checks-fail-explain-show-ignored-tags-test
go install honnef.co/go/tools/cmd/staticcheck@latest
Installe staticcheck
@latest
golangci-lint run
Lance golangci-lint (agrège plusieurs linters)
--enable--disable--fast--fix--config--tests--skip-dirs--timeout--out-format--new--new-from-rev--issues-exit-code--max-issues-per-linter--max-same-issues
golangci-lint run --enable-all
Active tous les linters
--enable-all
golangci-lint run --fix
Corrige automatiquement les problèmes
--fix
air
Lance le hot reload avec Air
-c--build.cmd--build.bin--build.delay--build.exclude_dir--build.include_ext--log.level
air init
Génère un fichier de configuration .air.toml
go install github.com/air-verse/air@latest
Installe Air
@latest
go run github.com/swaggo/swag/cmd/swag@latest init
Génère la documentation Swagger (Swaggo)
-g--generalInfo-d--dir-o--output--parseDependency--parseInternal--parseDepth--instanceName--overridesFile--parseGoList
swag init
Génère la documentation Swagger (si swag est installé)
-g-d-o--pd--pi--pdl--ot
go install github.com/swaggo/swag/cmd/swag@latest
Installe Swag CLI
@latest
mockgen -source=interface.go -destination=mocks/mock.go
Génère des mocks avec mockgen (gomock)
-source-destination-package-aux_files-build_flags-copyright_file-debug_parser-imports-mock_names-self_package-write_package_comment
go install github.com/golang/mock/mockgen@latest
Installe mockgen
@latest
go test -coverprofile=coverage.out && go tool cover -html=coverage.out -o coverage.html
Génère un rapport HTML de couverture
go run github.com/onsi/ginkgo/v2/ginkgo
Lance les tests avec Ginkgo (BDD)
-r--randomize-all--randomize-suites--keep-going--until-it-fails--repeat--flake-attempts--trace--no-color-v--slow-spec-threshold--dry-run--label-filter--focus--skip--timeout--output-interceptor-mode
ginkgo bootstrap
Initialise Ginkgo dans le projet
ginkgo generate
Génère un fichier de test Ginkgo
-template
go run github.com/go-task/task/v3/cmd/task
Exécute un Taskfile (alternative à Make)
-l--list-a--list-all-s--summary-t--taskfile-d--dir-c--concurrency-p--parallel-f--force-w--watch-v--verbose--dry-run--exit-code--silent--output
go install github.com/go-task/task/v3/cmd/task@latest
Installe Task
@latest
go test -ldflags="-X github.com/user/project/version.Version=1.0.0"
Injecte une variable lors des tests
-ldflags
go build -buildmode=plugin
Compile en plugin Go (Linux/macOS)
-buildmode
go build -buildmode=c-shared
Compile en bibliothèque partagée C
-buildmode
go build -buildmode=c-archive
Compile en archive C
-buildmode
go env -w GOPROXY=https://proxy.golang.org,direct
Configure le proxy Go
-w
go env -w GOPRIVATE=github.com/monentreprise/*
Configure les modules privés
-w
go env -w GOSUMDB=off
Désactive la vérification de somme (non recommandé)
-w
go env -w CGO_ENABLED=0
Désactive CGO (build statique)
-w
go mod why -m github.com/gin-gonic/gin
Explique pourquoi un module est utilisé
-m
go mod edit -go=1.21
Change la version Go dans go.mod
-go
go mod edit -module=new/module/path
Change le chemin du module
-module
go mod edit -retract=v1.0.0
Rétracte une version du module
-retract
go mod edit -exclude=github.com/buggy/module@v1.2.3
Exclut une version spécifique
-exclude
go mod edit -dropreplace=github.com/old/module
Supprime une directive replace
-dropreplace
go mod download -json
Télécharge les modules avec sortie JSON
-json
go list -m -json all
Affiche tous les modules en JSON
-m-json
go version -m monapp
Affiche les informations de build intégrées
-m
go build -ldflags="-X main.buildTime=$(date -u +%Y-%m-%dT%H:%M:%SZ)"
Injecte la date de build
-ldflags
go build -ldflags="-X main.gitCommit=$(git rev-parse HEAD)"
Injecte le hash Git
-ldflags
go test -c
Compile le binaire de test sans l'exécuter
-c-o
go test -o test.binary -c
Compile le binaire de test avec nom personnalisé
-o-c
go test -exec=wine -v ./...
Exécute les tests avec un émulateur (ex: Wine)
-exec
go test -vet=off
Désactive go vet pendant les tests
-vet
go test -parallel=4
Exécute jusqu'à 4 tests en parallèle
-parallel
go test -failfast
Arrête les tests au premier échec
-failfast
go test -args -custom-flag=value
Passe des arguments personnalisés aux tests
-args
go get -t -u ./...
Met à jour toutes les dépendances, y compris celles de test
-t-u
go mod vendor -v
Vendore les dépendances avec logs
-v
go work edit -go=1.21
Change la version Go dans go.work
-go
go work edit -dropuse=./module1
Retire un module du workspace
-dropuse
go work edit -replace=old@v1.0.0=new@v1.1.0
Ajoute un replace dans le workspace
-replace
go work use -r ./...
Ajoute récursivement tous les modules
-r
go work sync -v
Synchronise le workspace avec logs
-v
go doc -all
Affiche toute la documentation d'un package
-all