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コマンドの包括的なリファレンスとして活用してください。日常的な開発作業から高度な使用法まで、幅広いシナリオに対応できるように構成されています。
| 名称 | 説明 |
|---|---|
| bug | バグレポートを開始する |
| build | パッケージと依存関係をコンパイルする |
| clean | オブジェクトファイルやキャッシュファイルを削除する |
| doc | パッケージやシンボルのドキュメントを表示する |
| env | Goの環境情報を表示する |
| fix | 静的解析ツールが推奨する修正を適用する |
| fmt | パッケージのソースコードを整形(gofmt)する |
| generate | ソースを処理してGoファイルを生成する |
| get | 現在のモジュールに依存関係を追加し、インストールする |
| help | ヘルプを表示する |
| install | パッケージと依存関係をコンパイルし、インストールする |
| list | パッケージまたはモジュールを一覧表示する |
| mod | モジュールのメンテナンスを行う |
| work | ワークスペースのメンテナンスを行う |
| run | Goプログラムをコンパイルして実行する |
| telemetry | テレメトリ(計測データ)のデータと設定を管理する |
| test | パッケージのテストを実行する |
| tool | 指定されたGoツールを実行する |
| version | Goのバージョンを表示する |
| vet | パッケージ内の誤りと思われる箇所を報告する |
下位階層のページ
[編集]- bug
- build
- clean
- doc
- env
- fix
- fix/any
- fix/bloop
- fix/buildtag
- fix/errorsastype
- fix/fmtappendf
- fix/forvar
- fix/hostport
- fix/inline
- fix/mapsloop
- fix/minmax
- fix/newexpr
- fix/omitzero
- fix/plusbuild
- fix/rangeint
- fix/reflecttypefor
- fix/slicescontains
- fix/slicessort
- fix/stditerators
- fix/stringsbuilder
- fix/stringscut
- fix/stringscutprefix
- fix/stringsseq
- fix/testingcontext
- fix/waitgroup
- fmt
- generate
- get
- help
- install
- list
- mod
- run
- telemetry
- test
- tool
- tool/addr2line
- tool/asm
- tool/cgo
- tool/compile
- tool/covdata
- tool/covdata/debugdump
- tool/covdata/func
- tool/covdata/intersect
- tool/covdata/merge
- tool/covdata/percent
- tool/covdata/pkglist
- tool/covdata/subtract
- tool/covdata/textfmt
- tool/cover
- tool/dist
- tool/link
- tool/nm
- tool/objdump
- tool/pack
- tool/pprof
- tool/preprofile
- tool/test2json
- tool/trace
- version
- vet
- vet/appends
- vet/asmdecl
- vet/assign
- vet/atomic
- vet/bools
- vet/buildtag
- vet/cgocall
- vet/composites
- vet/copylocks
- vet/defers
- vet/directive
- vet/errorsas
- vet/framepointer
- vet/hostport
- vet/httpresponse
- vet/ifaceassert
- vet/loopclosure
- vet/lostcancel
- vet/nilfunc
- vet/printf
- vet/shift
- vet/sigchanyzer
- vet/slog
- vet/stdmethods
- vet/stdversion
- vet/stringintconv
- vet/structtag
- vet/testinggoroutine
- vet/tests
- vet/timeformat
- vet/unmarshal
- vet/unreachable
- vet/unsafeptr
- vet/unusedresult
- vet/waitgroup
- work
- work/init