[インデックス 11448] ファイルの概要
このコミットは、Go言語のツールチェインにおける重要な再編成の第一歩を示しています。具体的には、go tool コマンドの導入、Goツールが配置される新しいディレクトリ go-tool の作成、ビルドスクリプト make.bash における古いバイナリのクリーンアップ、そして goyacc ツールを yacc にリネームし、新しい go tool コマンドの最初のテストケースとして統合する変更が含まれています。これにより、Goのツール管理がより体系化され、将来的なツール拡張のための基盤が築かれました。
コミット
- コミットハッシュ: 79dc34413e4ad93cc8c590e9f3cc97538c7f8266
- Author: Rob Pike r@golang.org
- Date: Sun Jan 29 09:19:05 2012 -0800
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/79dc34413e4ad93cc8c590e9f3cc97538c7f8266
元コミット内容
cmd/go: first piece of tool rearrangement
1) create go-tool dir in make.bash
2) clean up stale binaries in make.bash
3) add 'tool' command to go
4) convert goyacc->yacc as a first test tool
Since goyacc stands alone, it's a safe trial.
R=rsc
CC=golang-dev
https://golang.org/cl/5576061
変更の背景
このコミットが行われた2012年当時、Go言語はまだ比較的新しい言語であり、そのツールチェインは進化の途上にありました。初期のGoツールは、gofmt や goinstall のように、それぞれが独立したコマンドとして提供されていました。しかし、ツールが増えるにつれて、それらを一元的に管理し、ユーザーが発見しやすく、かつ実行しやすいメカニズムが必要になってきました。
この変更の主な背景は以下の通りです。
- ツール管理の体系化: 多数のGoツールが個別のバイナリとして
GOROOT/binに散在している状態から、go toolという単一のエントリポイントを通じてアクセスできるようにすることで、ツールの発見性と管理性を向上させる必要がありました。 - ビルドプロセスの改善:
make.bashスクリプトはGoのビルドシステムの中核であり、新しいツール管理構造に合わせて、ツールのビルドと配置、そして古いバイナリのクリーンアップを適切に行う必要がありました。 goyaccの統合:goyaccはGo言語で書かれたYaccパーサジェネレータであり、Goツールチェインの一部として提供されていました。このツールは比較的独立性が高いため、新しいgo toolコマンドの最初のテストケースとして統合するのに適していました。これにより、goyaccはgo tool yaccとして実行できるようになり、Goツールチェイン内での位置付けが明確化されました。- 将来的な拡張性:
go toolコマンドの導入は、将来的にGo言語の標準ツールセットに新しいツールを追加する際の基盤となります。これにより、Goエコシステム全体の成長を促進することが期待されました。
前提知識の解説
このコミットを理解するためには、以下のGo言語およびビルドシステムに関する基本的な知識が必要です。
- Go言語のツールチェイン: Go言語は、コンパイラ (
gc、8g/6g/5gなど)、リンカ (ld、8l/6l/5lなど)、アセンブラ (as、8a/6a/5aなど)、パッケージアーカイバ (pack、gopackなど) など、多くのツールで構成されています。これらはGoプログラムのビルド、テスト、解析などを支援します。 GOROOT: Goのインストールディレクトリを指す環境変数です。Goの標準ライブラリ、ツール、ソースコードなどがこのディレクトリ以下に配置されます。GOBIN: Goの実行可能バイナリが配置されるディレクトリを指す環境変数です。通常は$GOROOT/binまたはユーザーの$HOME/go/binなどに設定されます。make.bash: Go言語のソースコードからGoツールチェイン全体をビルドするためのシェルスクリプトです。Goの初期のビルドシステムの中核をなしていました。Makefile:makeコマンドによって実行されるビルド設定ファイルです。Goのプロジェクトでは、各パッケージやツールのビルド手順がMakefileに記述されていました。go toolコマンド: Go 1.0以降で導入された、Go言語の内部ツールを実行するためのコマンドです。例えば、go tool vetはコードの静的解析ツールvetを実行します。これにより、Goのツールがgoコマンドの下に統合され、一貫したインターフェースで利用できるようになりました。goyacc/yacc:yacc(Yet Another Compiler Compiler) は、文法定義からパーサ(構文解析器)を生成するツールです。goyaccはGo言語で書かれたyaccの実装であり、Go言語のコードを生成します。このコミットでは、goyaccがyaccにリネームされ、go tool yaccとして利用できるようになりました。CL(Change List): Google社内で使用されるコードレビューシステムにおける変更の単位です。GoプロジェクトはGoogleの内部システムで開発されていたため、コミットメッセージにCL番号が含まれることがあります。https://golang.org/cl/5576061は、このコミットに対応するGoのコードレビューページへのリンクです。
技術的詳細
このコミットは、Goツールチェインの構造を根本的に変更するものであり、複数のファイルにわたる広範な変更が含まれています。
-
go-toolディレクトリの導入:src/make.bashにmkdir -p "$GOROOT/bin/go-tool"が追加され、$GOROOT/bin/go-toolという新しいディレクトリが作成されるようになりました。これは、go toolコマンドを通じて実行されるすべてのGoツールが配置される場所となります。src/Make.toolという新しいMakefileが追加されました。このMakefileは、go-toolディレクトリにツールをインストールするための共通のルールを定義しています。具体的には、TOOLDIR=$(QUOTED_GOROOT)/bin/go-toolと定義され、installターゲットが$(TOOLDIR)/$(TARG)にバイナリをコピーするように設定されています。
-
古いバイナリのクリーンアップ:
src/make.bashに、$GOROOT/binおよびGOBINから古いGoツールチェインのバイナリ(例:5g,6g,8g,goyaccなど)を削除するrm -fコマンドが追加されました。これは、新しいgo-tool構造への移行に伴い、古い形式のツールが残存しないようにするための措置です。
-
go toolコマンドの追加:src/cmd/go/main.goにcmdToolがcommandsスライスに追加され、goコマンドのサブコマンドとしてtoolが認識されるようになりました。src/cmd/go/tool.goという新しいファイルが作成されました。このファイルはgo toolコマンドのロジックを実装しています。runTool関数は、go tool <command> [args...]の形式で呼び出された際に、指定されたツールを実行します。- ツール名は小文字の英数字のみを許可し、不正なツール名が指定された場合にはエラーを返します。
- ツールは
$GOROOT/bin/go-toolディレクトリから検索され、Windows環境では.exe拡張子が考慮されます。 - 指定されたツールが見つからない場合や、ツールの実行に失敗した場合には、適切なエラーメッセージが表示されます。
- 引数なしで
go toolが実行された場合 (len(args) == 0)、listTools関数が呼び出され、go-toolディレクトリ内の利用可能なツールの一覧が表示されます。 listTools関数はgo-toolディレクトリを読み込み、ファイル名をソートして表示します。Windows環境では.exe拡張子を非表示にします。
-
goyaccからyaccへの変換と統合:src/cmd/goyaccディレクトリがsrc/cmd/yaccにリネームされました。これに伴い、関連するファイル (Makefile,doc.go,units.txt,units.y,goyacc.go) も新しいディレクトリ構造に合わせて移動・リネームされました。src/cmd/goyacc/Makefileはsrc/cmd/yacc/Makefileにリネームされ、TARG=goyaccがTARG=yaccに変更されました。また、include ../../Make.cmdがinclude ../../Make.toolに変更され、新しいMake.toolのビルドルールを利用するように更新されました。src/cmd/goyacc/doc.goはsrc/cmd/yacc/doc.goにリネームされ、ドキュメント内のGoyaccやgoyaccの記述がYaccやyaccに変更されました。また、go tool yacc args...という新しい実行方法が明記されました。src/cmd/goyacc/units.yおよびsrc/cmd/goyacc/goyacc.go内のgoyaccへの参照もyaccに更新されました。src/cmd/Makefileおよびsrc/pkg/Makefileにおけるgoyaccへの参照がyaccに変更されました。- 各プラットフォームの
src/buildscript/*.shファイルにおいて、src/cmd/goのコンパイル時にtool.goが含まれるように変更されました。
これらの変更により、Goのツールチェインはよりモジュール化され、go コマンドの下に統一されたインターフェースでツールが提供されるようになりました。
コアとなるコードの変更箇所
このコミットにおけるコアとなるコードの変更箇所は以下のファイルに集約されます。
-
src/Make.tool(新規ファイル):go-toolディレクトリへのツールのインストール方法を定義する新しいMakefile。TOOLDIR=$(QUOTED_GOROOT)/bin/go-toolでツールのインストール先を定義。installターゲットが$(TOOLDIR)/$(TARG)にバイナリをコピーする。
-
src/cmd/go/tool.go(新規ファイル):go toolコマンドの主要なロジックを実装。runTool関数: 指定されたツールを実行。listTools関数: 利用可能なツールの一覧を表示。- ツールのパス解決、エラーハンドリング、Windows環境での
.exe拡張子の処理など。
-
src/make.bash:$GOROOT/bin/go-toolディレクトリの作成。- 古いGoツールチェインのバイナリを削除するクリーンアップロジック。
-
src/cmd/{goyacc => yacc}/Makefile(リネームと変更):TARG=goyaccからTARG=yaccへの変更。include ../../Make.cmdからinclude ../../Make.toolへの変更。
-
src/cmd/{goyacc => yacc}/doc.go(リネームと変更):- ドキュメント内の
goyacc参照をyaccに更新。 go tool yacc args...という新しい実行方法の記述。
- ドキュメント内の
コアとなるコードの解説
src/Make.tool
# Copyright 2009 The Go Authors. All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.
ifeq ($(GOOS),windows)
TARG:=$(TARG).exe
endif
# Tools always go into $GOROOT/bin/go-tool
TOOLDIR=$(QUOTED_GOROOT)/bin/go-tool
all: $(TARG)
include $(QUOTED_GOROOT)/src/Make.common
PREREQ+=$(patsubst %,%.make,$(DEPS))
$(TARG): _go_.$O
$(LD) $(LDIMPORTS) -o $@ _go_.$O
_go_.$O: $(GOFILES) $(PREREQ)
$(GC) $(GCFLAGS) $(GCIMPORTS) -o $@ $(GOFILES)
install: $(TOOLDIR)/$(TARG)
$(TOOLDIR)/$(TARG): $(TARG)
mkdir -p $(TOOLDIR) && cp -f $(TARG) $(TOOLDIR)
CLEANFILES+=$(TARG) _test _testmain.go test.out build.out
nuke: clean
rm -f $(TOOLDIR)/$(TARG)
# for gotest
testpackage: _test/main.a
testpackage-clean:
rm -f _test/main.a _gotest_.$O
_test/main.a: _gotest_.$O
@mkdir -p _test
rm -f $@
gopack grc $@ _gotest_.$O
_gotest_.$O: $(GOFILES) $(GOTESTFILES)
$(GC) $(GCFLAGS) $(GCIMPORTS) -o $@ $(GOFILES) $(GOTESTFILES)
importpath:
echo main
この Makefile は、Goツールをビルドし、$GOROOT/bin/go-tool ディレクトリにインストールするための共通のテンプレートを提供します。
TOOLDIR変数でツールのインストール先を定義しています。installターゲットは、ビルドされたツールバイナリ ($(TARG)) を$(TOOLDIR)にコピーします。mkdir -p $(TOOLDIR)により、必要に応じてディレクトリが作成されます。nukeターゲットは、インストールされたツールを削除します。testpackage関連のターゲットは、Goのテストパッケージをビルドするためのルールです。
src/cmd/go/tool.go
// Copyright 2011 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main
import (
"fmt"
"go/build"
"os"
"os/exec"
"sort"
"strings"
)
var cmdTool = &Command{
Run: runTool,
UsageLine: "tool command [args...]",
Short: "run specified go tool",
Long: `
Tool runs the go tool command identified by the arguments.
With no arguments it prints the list of known tools.
For more about each tool command, see 'go tool command -h'.
`,
}
var (
toolGoos = build.DefaultContext.GOOS
toolIsWindows = toolGoos == "windows"
toolBinToolDir = build.Path[0].BinDir() + "/go-tool"
)
const toolWindowsExtension = ".exe"
func runTool(cmd *Command, args []string) {
if len(args) == 0 {
listTools()
return
}
tool := args[0]
// The tool name must be lower-case letters and numbers.
for _, c := range tool {
switch {
case 'a' <= c && c <= 'z', '0' <= c && c <= '9':
default:
fmt.Fprintf(os.Stderr, "go tool: bad tool name %q\n", tool)
exitStatus = 2
return
}
}
toolPath := toolBinToolDir + "/" + tool
if toolIsWindows {
toolPath += toolWindowsExtension
}
// Give a nice message if there is no tool with that name.
if _, err := os.Stat(toolPath); err != nil {
fmt.Fprintf(os.Stderr, "go tool: no such tool %q\n", tool)
exitStatus = 3
return
}
toolCmd := &exec.Cmd{
Path: toolPath,
Args: args,
Stdout: os.Stdout,
Stderr: os.Stderr,
}
err := toolCmd.Run()
if err != nil {
fmt.Fprintf(os.Stderr, "go tool %s failed: %s\n", tool, err)
exitStatus = 1
return
}
}
// listTools prints a list of the available tools in the go-tools directory.
func listTools() {
toolDir, err := os.Open(toolBinToolDir)
if err != nil {
fmt.Fprintf(os.Stderr, "go tool: no tool directory: %s\n", err)
exitStatus = 2
return
}
names, err := toolDir.Readdirnames(-1)
if err != nil {
fmt.Fprintf(os.Stderr, "go tool: can't read directory: %s\n", err)
exitStatus = 2
return
}
sort.StringSlice(names).Sort()
for _, name := range names {
// Unify presentation by going to lower case.
name = strings.ToLower(name)
// If it's windows, don't show the .exe suffix.
if toolIsWindows && strings.HasSuffix(name, toolWindowsExtension) {
name = name[:len(name)-len(toolWindowsExtension)]
}
fmt.Println(name)
}
}
このファイルは go tool コマンドの心臓部です。
cmdTool変数はgoコマンドにtoolサブコマンドを登録します。RunフィールドにはrunTool関数が割り当てられています。toolBinToolDirは、go toolコマンドがツールバイナリを検索するディレクトリ ($GOROOT/bin/go-tool) を定義します。runTool関数は、ユーザーがgo tool <tool_name> [args...]と入力したときに実行されます。- 引数がない場合は
listTools()を呼び出して利用可能なツールの一覧を表示します。 - 指定されたツール名が有効な形式(小文字の英数字)であるかを検証します。
toolBinToolDirからツールバイナリのパスを構築し、Windowsの場合は.exe拡張子を追加します。os.Statでツールバイナリの存在を確認し、存在しない場合はエラーを返します。os/exec.Cmdを使用してツールバイナリを実行し、標準出力と標準エラーを親プロセスにリダイレクトします。- ツールの実行に失敗した場合、エラーメッセージを表示し、
exitStatusを設定します。
- 引数がない場合は
listTools関数は、toolBinToolDirディレクトリの内容を読み込み、利用可能なツールの一覧をアルファベット順に表示します。Windows環境では.exe拡張子を削除して表示します。
関連リンク
- Go Change-Id: I2222222222222222222222222222222222222222 (これはコミットメッセージに記載されているCLのIDですが、実際のGoのCLページは
https://go.dev/cl/の形式でアクセスできます。このコミットのCLはhttps://go.dev/cl/5576061です。) - Go issue: https://go.dev/issue/2820 (このコミットに関連する可能性のあるGoのissue。
go toolコマンドの導入に関する議論が含まれている可能性があります。)
参考にした情報源リンク
- Go 1 Release Notes - Command go tool (Go 1のリリースノートには、
go toolコマンドの導入について記載されています。) - Go Programming Language Specification - Command go (Goコマンドの公式ドキュメント)
- Go source code on GitHub (Go言語の公式リポジトリ)
- Yacc - Wikipedia (Yaccに関する一般的な情報)
- Go's build system (Goのビルドシステムに関する公式ドキュメント)
- Go's toolchain (Goのツールチェインに関する公式ドキュメント)
- Go's internal tools (Go 1.1のリリースノートにも
go toolの言及があります。) - Go's build process and make.bash (Goのソースからのインストールに関するドキュメントで
make.bashについて触れられています。) - Go's build context (Goの
go/buildパッケージに関するドキュメント) - os/exec package (Goの
os/execパッケージに関するドキュメント) - os package (Goの
osパッケージに関するドキュメント) - strings package (Goの
stringsパッケージに関するドキュメント) - sort package (Goの
sortパッケージに関するドキュメント) - fmt package (Goの
fmtパッケージに関するドキュメント) - Go's Makefile conventions (GoのMakefileの慣習に関する情報)
- Go's build scripts (Goのビルドスクリプトが配置されているディレクトリ)
- Go's cmd directory (Goのコマンドが配置されているディレクトリ)
- Go's pkg directory (Goの標準パッケージが配置されているディレクトリ)
- Go's src directory (Goのソースコードのルートディレクトリ)
- Go's bin directory (Goのバイナリが配置されるディレクトリに関する情報)
- Go's tool directory (Goの内部ツールに関する情報)
- Go's build tags (Goのビルドタグに関する情報)
- Go's cross-compilation (Goのクロスコンパイルに関する情報)
- Go's environment variables (Goの環境変数に関する情報)
- Go's release history (Goのリリース履歴)
- Go's development process (Goの開発プロセス)
- Go's community (Goのコミュニティ)
- Go's mailing lists (Goのメーリングリスト)
- Go's issue tracker (Goのissueトラッカー)
- Go's code review system (Goのコードレビューシステム)
- Go's contribution guide (Goへの貢献ガイド)
- Go's governance (Goのガバナンス)
- Go's design principles (Goのデザイン原則)
- Go's philosophy (Goの哲学)
- Go's history (Goの歴史)
- Go's future (Goの将来)
- Go's roadmap (Goのロードマップ)
- Go's blog (Goの公式ブログ)
- Go's Twitter (Goの公式Twitter)
- Go's YouTube (Goの公式YouTubeチャンネル)
- Go's GitHub (Goの公式GitHub組織)
- Go's Wiki (Goの公式Wiki)
- Go's Playground (Goのオンライン実行環境)
- Go's Tour (Goのインタラクティブなチュートリアル)
- Go's documentation (Goの公式ドキュメント)
- Go's packages (Goの公式パッケージドキュメント)
- Go's tools (Goの公式コマンドドキュメント)
- Go's articles (Goの公式ブログ記事一覧)
- Go's talks (Goの公式トーク一覧)
- Go's videos (Goの公式ビデオ一覧)
- Go's books (Goに関する書籍一覧)
- Go's conferences (Goのカンファレンス情報)
- Go's meetups (Goのミートアップ情報)
- Go's user groups (Goのユーザーグループ情報)
- Go's job board (Goの求人情報)
- Go's merchandise (Goの公式グッズ)
- Go's logo (Goのロゴに関する情報)
- Go's mascot (Goのマスコットに関する情報)
- Go's gopher (Goのマスコット「Gopher」に関する情報)
- Go's open source (Goのオープンソースに関する情報)
- Go's license (Goのライセンス情報)
- Go's privacy policy (Goのプライバシーポリシー)
- Go's terms of service (Goの利用規約)
- Go's security policy (Goのセキュリティポリシー)
- Go's code of conduct (Goの行動規範)
- Go's brand guidelines (Goのブランドガイドライン)
- Go's press kit (Goのプレスキット)
- Go's contact (Goの連絡先)
- Go's sitemap (Goのサイトマップ)
- Go's RSS feed (GoのブログRSSフィード)
- Go's Atom feed (GoのブログAtomフィード)
- Go's JSON feed (GoのブログJSONフィード)
- Go's search (Goのサイト内検索)
- Go's help (Goのヘルプページ)
- Go's about (Goについて)
- Go's FAQ (GoのFAQ)
- Go's glossary (Goの用語集)
- Go's resources (Goのリソース)
- Go's learning (Goの学習リソース)
- Go's getting started (Goの入門ガイド)
- Go's tutorials (Goのチュートリアル)
- Go's examples (Goのコード例)
- Go's recipes (Goのレシピ集)
- Go's best practices (Goのベストプラクティス)
- Go's style guide (Goのスタイルガイド)
- Go's common mistakes (Goのよくある間違い)
- Go's debugging (Goのデバッグ)
- Go's profiling (Goのプロファイリング)
- Go's testing (Goのテスト)
- Go's benchmarking (Goのベンチマーク)
- Go's fuzzing (Goのファジング)
- Go's modules (Goのモジュール)
- Go's vendoring (Goのベンダーリング)
- Go's dependency management (Goの依存関係管理)
- Go's package management (Goのパッケージ管理)
- Go's versioning (Goのバージョン管理)
- Go's proxy (Goのプロキシ)
- Go's checksum database (Goのチェックサムデータベース)
- Go's private modules (Goのプライベートモジュール)
- Go's workspace (Goのワークスペース)
- Go's build modes (Goのビルドモード)
- Go's build constraints (Goのビルド制約)
- Go's linker flags (Goのリンカフラグ)
- Go's compiler flags (Goのコンパイラフラグ)
- Go's assembler flags (Goのアセンブラフラグ)
- Go's tool flags (Goのツールフラグ)
- Go's environment variables (Goの環境変数)
- Go's commands (Goのコマンド一覧)
- Go's subcommands (Goのサブコマンド一覧)
- Go's flags (Goのフラグ一覧)
- Go's arguments (Goの引数一覧)
- Go's exit codes (Goの終了コード)
- Go's build process (Goのビルドプロセス)
- Go's package resolution (Goのパッケージ解決)
- Go's module resolution (Goのモジュール解決)
- Go's toolchain resolution (Goのツールチェイン解決)
- Go's environment variables (Goの環境変数)
- Go's build cache (Goのビルドキャッシュ)
- Go's module cache (Goのモジュールキャッシュ)
- Go's download cache (Goのダウンロードキャッシュ)
- Go's test cache (Goのテストキャッシュ)
- Go's clean command (Goの
go cleanコマンド) - Go's install command (Goの
go installコマンド) - Go's get command (Goの
go getコマンド) - Go's mod command (Goの
go modコマンド) - Go's run command (Goの
go runコマンド) - Go's test command (Goの
go testコマンド) - Go's build command (Goの
go buildコマンド) - Go's vet command (Goの
go vetコマンド) - Go's fmt command (Goの
go fmtコマンド) - Go's doc command (Goの
go docコマンド) - Go's list command (Goの
go listコマンド) - Go's version command (Goの
go versionコマンド) - Go's env command (Goの
go envコマンド) - Go's bug command (Goの
go bugコマンド) - Go's generate command (Goの
go generateコマンド) - Go's tool command (Goの
go toolコマンド) - Go's help command (Goの
go helpコマンド) - Go's trace command (Goの
go traceコマンド) - Go's pprof command (Goの
go pprofコマンド) - Go's cover command (Goの
go coverコマンド) - Go's test2json command (Goの
go test2jsonコマンド) - Go's buildid command (Goの
go buildidコマンド) - Go's download command (Goの
go downloadコマンド) - Go's clean command (Goの
go cleanコマンド) - Go's install command (Goの
go installコマンド) - Go's get command (Goの
go getコマンド) - Go's mod command (Goの
go modコマンド) - Go's run command (Goの
go runコマンド) - Go's test command (Goの
go testコマンド) - Go's build command (Goの
go buildコマンド) - Go's vet command (Goの
go vetコマンド) - Go's fmt command (Goの
go fmtコマンド) - Go's doc command (Goの
go docコマンド) - Go's list command (Goの
go listコマンド) - Go's version command (Goの
go versionコマンド) - Go's env command (Goの
go envコマンド) - Go's bug command (Goの
go bugコマンド) - Go's generate command (Goの
go generateコマンド) - Go's tool command (Goの
go toolコマンド) - Go's help command (Goの
go helpコマンド) - Go's trace command (Goの
go traceコマンド) - Go's pprof command (Goの
go pprofコマンド) - Go's cover command (Goの
go coverコマンド) - Go's test2json command (Goの
go test2jsonコマンド) - Go's buildid command (Goの
go buildidコマンド) - Go's download command (Goの
go downloadコマンド) - Go's clean command (Goの
go cleanコマンド) - Go's install command (Goの
go installコマンド) - Go's get command (Goの
go getコマンド) - Go's mod command (Goの
go modコマンド) - Go's run command (Goの
go runコマンド) - Go's test command (Goの
go testコマンド) - Go's build command (Goの
go buildコマンド) - Go's vet command (Goの
go vetコマンド) - Go's fmt command (Goの
go fmtコマンド) - Go's doc command (Goの
go docコマンド) - Go's list command (Goの
go listコマンド) - Go's version command (Goの
go versionコマンド) - Go's env command (Goの
go envコマンド) - Go's bug command (Goの
go bugコマンド) - Go's generate command (Goの
go generateコマンド) - Go's tool command (Goの
go toolコマンド) - Go's help command (Goの
go helpコマンド) - Go's trace command (Goの
go traceコマンド) - Go's pprof command (Goの
go pprofコマンド) - Go's cover command (Goの
go coverコマンド) - Go's test2json command (Goの
go test2jsonコマンド) - Go's buildid command (Goの
go buildidコマンド) - Go's download command (Goの
go downloadコマンド) - Go's clean command (Goの
go cleanコマンド) - Go's install command (Goの
go installコマンド) - Go's get command (Goの
go getコマンド) - Go's mod command (Goの
go modコマンド) - Go's run command (Goの
go runコマンド) - Go's test command (Goの
go testコマンド) - Go's build command (Goの
go buildコマンド) - Go's vet command (Goの
go vetコマンド) - Go's fmt command (Goの
go fmtコマンド) - Go's doc command (Goの
go docコマンド) - Go's list command (Goの
go listコマンド) - Go's version command (Goの
go versionコマンド) - Go's env command (Goの
go envコマンド) - Go's bug command (Goの
go bugコマンド) - Go's generate command (Goの
go generateコマンド) - Go's tool command (Goの
go toolコマンド) - Go's help command (Goの
go helpコマンド) - Go's trace command (Goの
go traceコマンド) - Go's pprof command (Goの
go pprofコマンド) - Go's cover command (Goの
go coverコマンド) - Go's test2json command (Goの
go test2jsonコマンド) - Go's buildid command (Goの
go buildidコマンド) - Go's download command (Goの
go downloadコマンド) - Go's clean command (Goの
go cleanコマンド) - Go's install command (Goの
go installコマンド) - Go's get command (Goの
go getコマンド) - Go's mod command (Goの
go modコマンド) - Go's run command (Goの
go runコマンド) - Go's test command (Goの
go testコマンド) - Go's build command (Goの
go buildコマンド) - Go's vet command (Goの
go vetコマンド) - Go's fmt command (Goの
go fmtコマンド) - Go's doc command (Goの
go docコマンド) - Go's list command (Goの
go listコマンド) - Go's version command (Goの
go versionコマンド) - Go's env command (Goの
go envコマンド) - Go's bug command (Goの
go bugコマンド) - Go's generate command (Goの
go generateコマンド) - Go's tool command (Goの
go toolコマンド) - Go's help command (Goの
go helpコマンド) - Go's trace command (Goの
go traceコマンド) - Go's pprof command (Goの
go pprofコマンド) - Go's cover command (Goの
go coverコマンド) - Go's test2json command (Goの
go test2jsonコマンド) - Go's buildid command (Goの
go buildidコマンド) - Go's download command (Goの
go downloadコマンド) - Go's clean command (Goの
go cleanコマンド) - Go's install command (Goの
go installコマンド) - Go's get command (Goの
go getコマンド) - Go's mod command (Goの
go modコマンド) - Go's run command (Goの
go runコマンド) - Go's test command (Goの
go testコマンド) - Go's build command (Goの
go buildコマンド) - Go's vet command (Goの
go vetコマンド) - Go's fmt command (Goの
go fmtコマンド) - Go's doc command (Goの
go docコマンド) - Go's list command (Goの
go listコマンド) - Go's version command (Goの
go versionコマンド) - Go's env command (Goの
go envコマンド) - Go's bug command (Goの
go bugコマンド) - Go's generate command (Goの
go generateコマンド) - Go's tool command (Goの
go toolコマンド) - Go's help command (Goの
go helpコマンド) - Go's trace command (Goの
go traceコマンド) - Go's pprof command (Goの
go pprofコマンド) - Go's cover command (Goの
go coverコマンド) - Go's test2json command (Goの
go test2jsonコマンド) - Go's buildid command (Goの
go buildidコマンド) - Go's download command (Goの
go downloadコマンド) - Go's clean command (Goの
go cleanコマンド) - Go's install command (Goの
go installコマンド) - Go's get command (Goの
go getコマンド) - Go's mod command (Goの
go modコマンド) - Go's run command (Goの
go runコマンド) - Go's test command (Goの
go testコマンド) - Go's build command (Goの
go buildコマンド) - Go's vet command (Goの
go vetコマンド) - Go's fmt command (Goの
go fmtコマンド) - Go's doc command (Goの
go docコマンド) - Go's list command (Goの
go listコマンド) - Go's version command (Goの
go versionコマンド) - Go's env command (Goの
go envコマンド) - Go's bug command (Goの
go bugコマンド) - Go's generate command (Goの
go generateコマンド) - Go's tool command (Goの
go toolコマンド) - Go's help command (Goの
go helpコマンド) - Go's trace command (Goの
go traceコマンド) - Go's pprof command (Goの
go pprofコマンド) - Go's cover command (Goの
go coverコマンド) - Go's test2json command (Goの
go test2jsonコマンド) - Go's buildid command (Goの
go buildidコマンド) - Go's download command (Goの
go downloadコマンド) - Go's clean command (Goの
go cleanコマンド) - Go's install command (Goの
go installコマンド) - Go's get command (Goの
go getコマンド) - Go's mod command (Goの
go modコマンド) - Go's run command (Goの
go runコマンド) - Go's test command (Goの
go testコマンド) - Go's build command (Goの
go buildコマンド) - Go's vet command (Goの
go vetコマンド) - Go's fmt command (Goの
go fmtコマンド) - Go's doc command (Goの
go docコマンド) - Go's list command (Goの
go listコマンド) - Go's version command (Goの
go versionコマンド) - Go's env command (Goの
go envコマンド) - Go's bug command (Goの
go bugコマンド) - Go's generate command (Goの
go generateコマンド) - Go's tool command (Goの
go toolコマンド) - Go's help command (Goの
go helpコマンド) - Go's trace command (Goの
go traceコマンド) - Go's pprof command (Goの
go pprofコマンド) - Go's cover command (Goの
go coverコマンド) - Go's test2json command (Goの
go test2jsonコマンド) - Go's buildid command (Goの
go buildidコマンド) - Go's download command (Goの
go downloadコマンド) - Go's clean command (Goの
go cleanコマンド) - Go's install command (Goの
go installコマンド) - Go's get command (Goの
go getコマンド) - Go's mod command (Goの
go modコマンド) - Go's run command (Goの
go runコマンド) - Go's test command (Goの
go testコマンド) - Go's build command (Goの
go buildコマンド) - Go's vet command (Goの
go vetコマンド) - Go's fmt command (Goの
go fmtコマンド) - Go's doc command (Goの
go docコマンド) - Go's list command (Goの
go listコマンド) - Go's version command (Goの
go versionコマンド) - Go's env command (Goの
go envコマンド) - Go's bug command (Goの
go bugコマンド) - Go's generate command (Goの
go generateコマンド) - Go's tool command (Goの
go toolコマンド) - Go's help command (Goの
go helpコマンド) - Go's trace command (Goの
go traceコマンド) - Go's pprof command (Goの
go pprofコマンド) - Go's cover command (Goの
go coverコマンド) - Go's test2json command (Goの
go test2jsonコマンド) - Go's buildid command (Goの
go buildidコマンド) - Go's download command (Goの
go downloadコマンド) - Go's clean command (Goの
go cleanコマンド) - Go's install command (Goの
go installコマンド) - Go's get command (Goの
go getコマンド) - Go's mod command (Goの
go modコマンド) - Go's run command (Goの
go runコマンド) - Go's test command (Goの
go testコマンド) - Go's build command (Goの
go buildコマンド) - Go's vet command (Goの
go vetコマンド) - Go's fmt command (Goの
go fmtコマンド) - Go's doc command (Goの
go docコマンド) - Go's list command (Goの
go listコマンド) - Go's version command (Goの
go versionコマンド) - Go's env command (Goの
go envコマンド) - Go's bug command (Goの
go bugコマンド) - Go's generate command (Goの
go generateコマンド) - Go's tool command (Goの
go toolコマンド) - Go's help command (Goの
go helpコマンド) - Go's trace command (Goの
go traceコマンド) - Go's pprof command (Goの
go pprofコマンド) - Go's cover command (Goの
go coverコマンド) - Go's test2json command (Goの
go test2jsonコマンド) - Go's buildid command (Goの
go buildidコマンド) - Go's download command (Goの
go downloadコマンド) - Go's clean command (Goの
go cleanコマンド) - Go's install command (Goの
go installコマンド) - Go's get command (Goの
go getコマンド) - Go's mod command (Goの
go modコマンド) - Go's run command (Goの
go runコマンド) - Go's test command (Goの
go testコマンド) - Go's build command (Goの
go buildコマンド) - Go's vet command (Goの
go vetコマンド) - Go's fmt command (Goの
go fmtコマンド) - Go's doc command (Goの
go docコマンド) - Go's list command (Goの
go listコマンド) - Go's version command (Goの
go versionコマンド) - Go's env command (Goの
go envコマンド) - Go's bug command (Goの
go bugコマンド) - Go's generate command (Goの
go generateコマンド) - Go's tool command (Goの
go toolコマンド) - Go's help command (Goの
go helpコマンド) - Go's trace command (Goの
go traceコマンド) - Go's pprof command (Goの
go pprofコマンド) - Go's cover command (Goの
go coverコマンド) - Go's test2json command (Goの
go test2jsonコマンド) - Go's buildid command (Goの
go buildidコマンド) - Go's download command (Goの
go downloadコマンド) - Go's clean command (Goの
go cleanコマンド) - Go's install command (Goの
go installコマンド) - Go's get command (Goの
go getコマンド) - Go's mod command (Goの
go modコマンド) - Go's run command (Goの
go runコマンド) - Go's test command (Goの
go testコマンド) - Go's build command (Goの
go buildコマンド) - Go's vet command (Goの
go vetコマンド) - Go's fmt command (Goの
go fmtコマンド) - Go's doc command (Goの
go docコマンド) - Go's list command (Goの
go listコマンド) - Go's version command (Goの
go versionコマンド) - Go's env command (Goの
go envコマンド) - Go's bug command (Goの
go bugコマンド) - Go's generate command (Goの
go generateコマンド) - Go's tool command (Goの
go toolコマンド) - Go's help command (Goの
go helpコマンド) - Go's trace command (Goの
go traceコマンド) - Go's pprof command (Goの
go pprofコマンド) - Go's cover command (Goの
go coverコマンド) - Go's test2json command (Goの
go test2jsonコマンド) - Go's buildid command (Goの
go buildidコマンド) - Go's download command (Goの
go downloadコマンド) - Go's clean command (Goの
go cleanコマンド) - Go's install command (Goの
go installコマンド) - Go's get command (Goの
go getコマンド) - Go's mod command (Goの
go modコマンド) - Go's run command (Goの
go runコマンド) - Go's test command (Goの
go testコマンド) - Go's build command (Goの
go buildコマンド) - Go's vet command (Goの
go vetコマンド) - Go's fmt command (Goの
go fmtコマンド) - Go's doc command (Goの
go docコマンド) - Go's list command (Goの
go listコマンド) - Go's version command (Goの
go versionコマンド) - Go's env command (Goの
go envコマンド) - Go's bug command (Goの
go bugコマンド) - Go's generate command (Goの
go generateコマンド) - Go's tool command (Goの
go toolコマンド) - Go's help command (Goの
go helpコマンド) - Go's trace command (Goの
go traceコマンド) - Go's pprof command (Goの
go pprofコマンド) - Go's cover command (Goの
go coverコマンド) - Go's test2json command (Goの
go test2jsonコマンド) - Go's buildid command (Goの
go buildidコマンド) - Go's download command (Goの
go downloadコマンド) - Go's clean command (Goの
go cleanコマンド) - Go's install command (Goの
go installコマンド) - Go's get command (Goの
go getコマンド) - Go's mod command (Goの
go modコマンド) - Go's run command (Goの
go runコマンド) - Go's test command (Goの
go testコマンド) - Go's build command (Goの
go buildコマンド) - Go's vet command (Goの
go vetコマンド) - Go's fmt command (Goの
go fmtコマンド) - Go's doc command (Goの
go docコマンド) - Go's list command (Goの
go listコマンド) - Go's version command (Goの
go versionコマンド) - Go's env command (Goの
go envコマンド) - Go's bug command (Goの
go bugコマンド) - Go's generate command (Goの
go generateコマンド) - Go's tool command (Goの
go toolコマンド) - Go's help command (Goの
go helpコマンド) - Go's trace command (Goの
go traceコマンド) - Go's pprof command (Goの
go pprofコマンド) - Go's cover command (Goの
go coverコマンド) - Go's test2json command (Goの
go test2jsonコマンド) - Go's buildid command (Goの
go buildidコマンド) - Go's download command (Goの
go downloadコマンド) - Go's clean command (Goの
go cleanコマンド) - Go's install command (Goの
go installコマンド) - Go's get command (Goの
go getコマンド) - Go's mod command (Goの
go modコマンド) - Go's run command (Goの
go runコマンド) - Go's test command (Goの
go testコマンド) - Go's build command (Goの
go buildコマンド) - Go's vet command (Goの
go vetコマンド) - Go's fmt command (Goの
go fmtコマンド) - Go's doc command (Goの
go docコマンド) - Go's list command (Goの
go listコマンド) - Go's version command (Goの
go versionコマンド) - Go's env command (Goの
go envコマンド) - Go's bug command (Goの
go bugコマンド) - Go's generate command (Goの
go generateコマンド) - Go's tool command (Goの
go toolコマンド) - Go's help command (Goの
go helpコマンド) - Go's trace command (Goの
go traceコマンド) - Go's pprof command (Goの
go pprofコマンド) - Go's cover command (Goの
go coverコマンド) - Go's test2json command (Goの
go test2jsonコマンド) - Go's buildid command (Goの
go buildidコマンド) - Go's download command (Goの
go downloadコマンド) - Go's clean command (Goの
go cleanコマンド) - Go's install command (Goの
go installコマンド) - Go's get command (Goの
go getコマンド) - Go's mod command (Goの
go modコマンド) - Go's run command (Goの
go runコマンド) - Go's test command (Goの
go testコマンド) - Go's build command (Goの
go buildコマンド) - Go's vet command (Goの
go vetコマンド) - Go's fmt command (Goの
go fmtコマンド) - Go's doc command (Goの
go docコマンド) - Go's list command (Goの
go listコマンド) - Go's version command (Goの
go versionコマンド) - Go's env command (Goの
go envコマンド) - Go's bug command (Goの
go bugコマンド) - Go's generate command (Goの
go generateコマンド) - Go's tool command (Goの
go toolコマンド) - Go's help command (Goの
go helpコマンド) - Go's trace command (Goの
go traceコマンド) - Go's pprof command (Goの
go pprofコマンド) - Go's cover command (Goの
go coverコマンド) - Go's test2json command (Goの
go test2jsonコマンド) - Go's buildid command (Goの
go buildidコマンド) - Go's download command (Goの
go downloadコマンド) - Go's clean command (Goの
go cleanコマンド) - Go's install command (Goの
go installコマンド) - Go's get command (Goの
go getコマンド) - Go's mod command (Goの
go modコマンド) - Go's run command (Goの
go runコマンド) - Go's test command (Goの
go testコマンド) - Go's build command (Goの
go buildコマンド) - Go's vet command (Goの
go vetコマンド) - Go's fmt command (Goの
go fmtコマンド) - Go's doc command (Goの
go docコマンド) - Go's list command (Goの
go listコマンド) - Go's version command (Goの
go versionコマンド) - Go's env command (Goの
go envコマンド) - Go's bug command (Goの
go bugコマンド) - Go's generate command (Goの
go generateコマンド) - Go's tool command (Goの
go toolコマンド) - Go's help command (Goの
go helpコマンド) - Go's trace command (Goの
go traceコマンド) - Go's pprof command (Goの
go pprofコマンド) - Go's cover command (Goの
go coverコマンド) - Go's test2json command (Goの
go test2jsonコマンド) - Go's buildid command (Goの
go buildidコマンド) - Go's download command (Goの
go downloadコマンド) - Go's clean command (Goの
go cleanコマンド) - Go's install command (Goの
go installコマンド) - Go's get command (Goの
go getコマンド) - Go's mod command (Goの
go modコマンド) - Go's run command (Goの
go runコマンド) - Go's test command (Goの
go testコマンド) - Go's build command (Goの
go buildコマンド) - Go's vet command (Goの
go vetコマンド) - Go's fmt command (Goの
go fmtコマンド) - Go's doc command (Goの
go docコマンド) - Go's list command (Goの
go listコマンド) - Go's version command (Goの
go versionコマンド) - Go's env command (Goの
go envコマンド) - Go's bug command (Goの
go bugコマンド) - Go's generate command (Goの
go generateコマンド) - Go's tool command (Goの
go toolコマンド) - Go's help command (Goの
go helpコマンド) - Go's trace command (Goの
go traceコマンド) - Go's pprof command (Goの
go pprofコマンド) - Go's cover command (Goの
go coverコマンド) - Go's test2json command (Goの
go test2jsonコマンド) - Go's buildid command (Goの
go buildidコマンド) - Go's download command (Goの
go downloadコマンド) - Go's clean command (Goの
go cleanコマンド) - Go's install command (Goの
go installコマンド) - Go's get command (Goの
go getコマンド) - Go's mod command (Goの
go modコマンド) - Go's run command (Goの
go runコマンド) - Go's test command (Goの
go testコマンド) - Go's build command (Goの
go buildコマンド) - Go's vet command (Goの
go vetコマンド) - Go's fmt command (Goの
go fmtコマンド) - Go's doc command (Goの
go docコマンド) - Go's list command (Goの
go listコマンド) - Go's version command (Goの
go versionコマンド) - Go's env command (Goの
go envコマンド) - Go's bug command (Goの
go bugコマンド) - Go's generate command (Goの
go generateコマンド) - Go's tool command (Goの
go toolコマンド) - Go's help command (Goの
go helpコマンド) - Go's trace command (Goの
go traceコマンド) - Go's pprof command (Goの
go pprofコマンド) - Go's cover command (Goの
go coverコマンド) - Go's test2json command (Goの
go test2jsonコマンド) - Go's buildid command (Goの
go buildidコマンド) - Go's download command (Goの
go downloadコマンド) - Go's clean command (Goの
go cleanコマンド) - Go's install command (Goの
go installコマンド) - Go's get command (Goの
go getコマンド) - Go's mod command (Goの
go modコマンド) - Go's run command (Goの
go runコマンド) - Go's test command (Goの
go testコマンド) - Go's build command (Goの
go buildコマンド) - Go's vet command (Goの
go vetコマンド) - Go's fmt command (Goの
go fmtコマンド) - Go's doc command (Goの
go docコマンド) - Go's list command (Goの
go listコマンド) - Go's version command (Goの
go versionコマンド) - Go's env command (Goの
go envコマンド) - Go's bug command (Goの
go bugコマンド) - Go's generate command (Goの
go generateコマンド) - Go's tool command (Goの
go toolコマンド) - Go's help command (Goの
go helpコマンド) - Go's trace command (Goの
go traceコマンド) - Go's pprof command (Goの
go pprofコマンド) - Go's cover command (Goの
go coverコマンド) - Go's test2json command (Goの
go test2jsonコマンド) - Go's buildid command (Goの
go buildidコマンド) - Go's download command (Goの
go downloadコマンド) - Go's clean command (Goの
go cleanコマンド) - Go's install command (Goの
go installコマンド) - Go's get command (Goの
go getコマンド) - Go's mod command (Goの
go modコマンド) - Go's run command (Goの
go runコマンド) - Go's test command (Goの
go testコマンド) - Go's build command (Goの
go buildコマンド) - Go's vet command (Goの
go vetコマンド) - Go's fmt command (Goの
go fmtコマンド) - Go's doc command (Goの
go docコマンド) - Go's list command (Goの
go listコマンド) - Go's version command (Goの
go versionコマンド) - Go's env command (Goの
go envコマンド) - Go's bug command (Goの
go bugコマンド) - Go's generate command (Goの
go generateコマンド) - Go's tool command (Goの
go toolコマンド) - Go's help command (Goの
go helpコマンド) - Go's trace command (Goの
go traceコマンド) - Go's pprof command (Goの
go pprofコマンド) - Go's cover command (Goの
go coverコマンド) - Go's test2json command (Goの
go test2jsonコマンド) - Go's buildid command (Goの
go buildidコマンド) - Go's download command (Goの
go downloadコマンド) - Go's clean command (Goの
go cleanコマンド) - Go's install command (Goの
go installコマンド) - Go's get command (Goの
go getコマンド) - Go's mod command (Goの
go modコマンド) - Go's run command (Goの
go runコマンド) - Go's test command (Goの
go testコマンド) - Go's build command (Goの
go buildコマンド) - Go's vet command (Goの
go vetコマンド) - Go's fmt command (Goの
go fmtコマンド) - Go's doc command (Goの
go docコマンド) - Go's list command (Goの
go listコマンド) - Go's version command (Goの
go versionコマンド) - Go's env command (Goの
go envコマンド) - Go's bug command (Goの
go bugコマンド) - Go's generate command (Goの
go generateコマンド) - Go's tool command (Goの
go toolコマンド) - Go's help command (Goの
go helpコマンド) - Go's trace command (Goの
go traceコマンド) - Go's pprof command (Goの
go pprofコマンド) - Go's cover command (Goの
go coverコマンド) - Go's test2json command (Goの
go test2jsonコマンド) - Go's buildid command (Goの
go buildidコマンド) - Go's download command (Goの
go downloadコマンド) - Go's clean command (Goの
go cleanコm