Go/goコマンド
表示
< Go
概要
[編集]goコマンドはGo言語の統合開発ツールです。コンパイル、実行、テスト、パッケージ管理、コード整形など、Go開発に必要な機能を一元的に提供します。
基本的な使用法
[編集]go <command> [arguments]
- ヘルプの表示:
go help go help <command>
基本的なコマンド
[編集]go version
[編集]「Go/goコマンド/version」も参照
Go のバージョン情報を表示します。
go version # 出力例: go version go1.21.0 linux/amd64
go env
[編集]「Go/goコマンド/env」も参照
Go の環境変数を表示・設定します。
# すべての環境変数を表示 go env # 特定の環境変数を表示 go env GOPATH GOROOT # 環境変数を設定 go env -w GOPROXY=direct
ビルド・実行系コマンド
[編集]go run
[編集]「Go/goコマンド/run」も参照
Go プログラムをコンパイルして実行します。
# 単一ファイルの実行 go run main.go # 複数ファイルの実行 go run main.go utils.go # パッケージ全体の実行 go run . # 引数を渡す場合 go run main.go -- arg1 arg2
- オプション
-race: レースコンディション検出を有効化-ldflags: リンカーフラグを指定
go build
[編集]「Go/goコマンド/build」も参照
Go プログラムをコンパイルして実行可能ファイルを生成します。
# 現在のディレクトリをビルド go build # 特定のファイルをビルド go build main.go # 出力ファイル名を指定 go build -o myapp main.go # クロスコンパイル GOOS=windows GOARCH=amd64 go build -o myapp.exe
- 主要なオプション
-o <filename>: 出力ファイル名を指定-v: ビルド過程を詳細表示-x: 実行されるコマンドを表示-race: レースコンディション検出を有効化-ldflags: リンカーフラグを指定-tags: ビルドタグを指定-trimpath: ファイルパス情報を削除
go install
[編集]「Go/goコマンド/install」も参照
パッケージをコンパイルして $GOPATH/bin または $GOBIN にインストールします。
# 現在のパッケージをインストール go install # 特定のパッケージをインストール go install github.com/user/package@latest # 特定のバージョンをインストール go install github.com/user/package@v1.2.3
テスト系コマンド
[編集]go test
[編集]「Go/goコマンド/test」も参照
テストを実行します。
# 現在のパッケージのテストを実行 go test # すべてのサブパッケージのテストを実行 go test ./... # 特定のパッケージのテストを実行 go test ./internal/utils # 詳細な出力 go test -v # 特定のテスト関数のみ実行 go test -run TestFunction # ベンチマークテストを実行 go test -bench=. # カバレッジを測定 go test -cover go test -coverprofile=coverage.out
- 主要なオプション
-v: 詳細な出力-run <pattern>: 特定のテスト関数を実行-bench <pattern>: ベンチマークテストを実行-cover: カバレッジを表示-coverprofile <file>: カバレッジをファイルに出力-race: レースコンディション検出-timeout <duration>: タイムアウトを設定-parallel <n>: 並列実行数を設定
go test の詳細な使用例
[編集]# 特定のパッケージのテストを詳細表示で実行 go test -v ./internal/database # レースコンディションチェック付きでテスト go test -race ./... # ベンチマークとカバレッジの同時実行 go test -bench=. -cover # カバレッジレポートの生成 go test -coverprofile=coverage.out ./... go tool cover -html=coverage.out -o coverage.html
パッケージ管理
[編集]go mod
[編集]「Go/goコマンド/mod」も参照
Go Modules を使用した依存関係管理。
# 新しいmoduleを初期化 go mod init module-name # 依存関係を追加 go get github.com/gin-gonic/gin # 特定のバージョンを指定 go get github.com/gin-gonic/gin@v1.9.1 # 依存関係を更新 go get -u github.com/gin-gonic/gin # すべての依存関係を更新 go get -u ./... # 依存関係を削除 go mod tidy # 依存関係のダウンロード go mod download # vendor ディレクトリを作成 go mod vendor # 依存関係の確認 go mod why github.com/gin-gonic/gin # 依存関係のグラフを表示 go mod graph
go get
[編集]「Go/goコマンド/get」も参照
パッケージのダウンロードとインストール。
# 最新版をダウンロード go get github.com/user/package # 特定のバージョンをダウンロード go get github.com/user/package@v1.2.3 # ブランチを指定 go get github.com/user/package@main # 依存関係を更新 go get -u github.com/user/package # 依存関係を削除 go get github.com/user/package@none
開発支援コマンド
[編集]go fmt
[編集]「Go/goコマンド/fmt」も参照
Go コードの書式を整えます。
# 現在のディレクトリのファイルを整形 go fmt # 特定のファイルを整形 go fmt main.go # すべてのサブディレクトリを整形 go fmt ./...
gofmt
[編集]より詳細な書式設定オプションを提供。
# ファイルを整形して結果を表示 gofmt main.go # ファイルを直接書き換え gofmt -w main.go # 簡単化を適用 gofmt -s main.go # 差分を表示 gofmt -d main.go
go vet
[編集]「Go/goコマンド/vet」も参照
コードの静的解析を行い、潜在的な問題を検出します。
# 現在のパッケージを検査 go vet # すべてのサブパッケージを検査 go vet ./... # 特定の検査のみ実行 go vet -printf ./...
go fix
[編集]「Go/goコマンド/fix」も参照
古いAPIを新しいAPIに自動変換します。
go fix ./...
go generate
[編集]「Go/goコマンド/generate」も参照
コード生成を実行します。
# 現在のパッケージでgo:generateを実行 go generate # すべてのパッケージで実行 go generate ./...
情報取得コマンド
[編集]go list
[編集]「Go/goコマンド/list」も参照
パッケージ情報を表示します。
# 現在のパッケージ情報を表示 go list # すべてのパッケージを表示 go list ./... # 詳細な情報を表示 go list -f '{{.ImportPath}} {{.Dir}}' ./... # 依存関係を表示 go list -deps ./... # JSON形式で出力 go list -json ./...
go doc
[編集]「Go/goコマンド/doc」も参照
ドキュメントを表示します。
# パッケージのドキュメントを表示 go doc fmt # 特定の関数のドキュメントを表示 go doc fmt.Printf # 現在のパッケージのドキュメントを表示 go doc # すべてのエクスポートされた識別子を表示 go doc -all fmt
go clean
[編集]「Go/goコマンド/clean」も参照
ビルド時に生成されたファイルを削除します。
# ビルドファイルを削除 go clean # キャッシュを削除 go clean -cache # モジュールキャッシュを削除 go clean -modcache # テストファイルを削除 go clean -testcache
環境変数
[編集]主要な環境変数
[編集]GOPATH: Go ワークスペースのパス(Go Modules使用時は通常不要)
export GOPATH=$HOME/go
GOROOT: Go インストールディレクトリ
export GOROOT=/usr/local/go
GOPROXY: モジュールプロキシの設定
export GOPROXY=https://proxy.golang.org,direct
GOSUMDB: チェックサムデータベースの設定
export GOSUMDB=sum.golang.org
GOPRIVATE: プライベートモジュールの設定
export GOPRIVATE=github.com/mycompany/*
CGO_ENABLED: CGOの有効/無効
export CGO_ENABLED=0 # 無効 export CGO_ENABLED=1 # 有効
ビルドタグ
[編集]ビルドタグの基本的な使用法
[編集]//go:build linux // +build linux package main import "fmt" func main() { fmt.Println("This runs only on Linux") }
複数条件の指定
[編集]//go:build (linux && amd64) || (darwin && arm64) package main
ビルドタグの指定
[編集]# 特定のタグでビルド go build -tags "production" # 複数のタグでビルド go build -tags "production,debug"
実践的な使用例
[編集]新しいプロジェクトの開始
[編集]# プロジェクトディレクトリを作成 mkdir myproject cd myproject # Go moduleを初期化 go mod init github.com/username/myproject # 依存関係を追加 go get github.com/gin-gonic/gin # コードを書いてテスト go test ./... # ビルドして実行 go build -o myapp ./myapp
継続的な開発ワークフロー
[編集]# コードの品質チェック go fmt ./... go vet ./... # テストの実行 go test -race -cover ./... # ビルドの確認 go build ./... # 依存関係の整理 go mod tidy
リリース用ビルド
[編集]# 本番用ビルド(最適化) go build -ldflags "-s -w" -o myapp # クロスコンパイル(複数プラットフォーム) GOOS=linux GOARCH=amd64 go build -o myapp-linux-amd64 GOOS=windows GOARCH=amd64 go build -o myapp-windows-amd64.exe GOOS=darwin GOARCH=amd64 go build -o myapp-darwin-amd64
デバッグとプロファイリング
[編集]# レースコンディション検出 go run -race main.go # CPUプロファイリング go test -cpuprofile=cpu.prof -bench=. go tool pprof cpu.prof # メモリプロファイリング go test -memprofile=mem.prof -bench=. go tool pprof mem.prof
よく使用するコマンドの組み合わせ
[編集]# 完全なテストとビルド go fmt ./... && go vet ./... && go test ./... && go build # 依存関係の更新とテスト go get -u ./... && go mod tidy && go test ./... # カバレッジレポートの生成 go test -coverprofile=coverage.out ./... && go tool cover -html=coverage.out
トラブルシューティング
[編集]よくある問題と解決方法
[編集]- モジュールが見つからない場合
go mod download go mod tidy
- キャッシュの問題
go clean -modcache go clean -cache
- プロキシの問題
go env -w GOPROXY=direct go env -w GOSUMDB=off
このハンドブックは、Go言語のgoコマンドの包括的なリファレンスとして活用してください。日常的な開発作業から高度な使用法まで、幅広いシナリオに対応できるように構成されています。