github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/cmd/go/alldocs.go (about) 1 // Copyright 2011 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // Code generated by 'go test cmd/go -v -run=^TestDocsUpToDate$ -fixdocs'; DO NOT EDIT. 6 // Edit the documentation in other files and then execute 'go generate cmd/go' to generate this one. 7 8 // Goは、Goのソースコードを管理するためのツールです。 9 // 10 // 使用法: 11 // 12 // go <コマンド> [引数] 13 // 14 // コマンドは以下の通りです: 15 // 16 // bug バグレポートを開始する 17 // build パッケージと依存関係をコンパイルする 18 // clean オブジェクトファイルとキャッシュファイルを削除する 19 // doc パッケージまたはシンボルのドキュメンテーションを表示する 20 // env Goの環境情報を表示する 21 // fix パッケージを更新して新しいAPIを使用する 22 // fmt gofmt(再フォーマット)パッケージソース 23 // generate ソースを処理してGoのファイルを生成する 24 // get 現在のモジュールに依存関係を追加し、それらをインストールする 25 // install パッケージと依存関係をコンパイルし、インストールする 26 // list パッケージまたはモジュールをリストする 27 // mod モジュールのメンテナンス 28 // work ワークスペースのメンテナンス 29 // run Goのプログラムをコンパイルして実行する 30 // test パッケージをテストする 31 // tool 指定されたgoツールを実行する 32 // version Goのバージョンを表示する 33 // vet パッケージのおそらく間違いを報告する 34 // 35 // "go help <コマンド>"を使用して、コマンドの詳細情報を取得します。 36 // 37 // 追加のヘルプトピック: 38 // 39 // buildconstraint ビルド制約 40 // buildmode ビルドモード 41 // c GoとC間の呼び出し 42 // cache ビルドとテストのキャッシュ 43 // environment 環境変数 44 // filetype ファイルタイプ 45 // go.mod go.modファイル 46 // gopath GOPATH環境変数 47 // goproxy モジュールプロキシプロトコル 48 // importpath インポートパスの構文 49 // modules モジュール、モジュールバージョンなど 50 // module-auth go.sumを使用したモジュール認証 51 // packages パッケージリストとパターン 52 // private 非公開コードのダウンロード設定 53 // testflag テストフラグ 54 // testfunc テスト関数 55 // vcs GOVCSでバージョン管理を制御 56 // 57 // "go help <トピック>"を使用して、そのトピックに関する詳細情報を取得します。 58 // 59 // # Start a bug report 60 // 61 // 使用法: 62 // 63 // go bug 64 // 65 // Bugはデフォルトのブラウザを開き、新しいバグレポートを開始します。 66 // レポートには、役立つシステム情報が含まれます。 67 // 68 // # Compile packages and dependencies 69 // 70 // 使用法: 71 // 72 // go build [-o output] [build flags] [packages] 73 // 74 // Buildは、インポートパスで指定されたパッケージとその依存関係をコンパイルしますが、 75 // 結果はインストールされません。 76 // 77 // buildへの引数が単一のディレクトリからの.goファイルのリストである場合、 78 // buildはそれらを単一のパッケージを指定するソースファイルのリストとして扱います。 79 // 80 // パッケージをコンパイルするとき、buildは'_test.go'で終わるファイルを無視します。 81 // 82 // 単一のmainパッケージをコンパイルするとき、buildは結果の 83 // 実行可能ファイルをパッケージインポートパスの最後の非メジャーバージョン 84 // コンポーネントに基づいて名付けられた出力ファイルに書き込みます。Windows実行可能ファイルを 85 // 書き込むときには'.exe'のサフィックスが追加されます。 86 // したがって、'go build example/sam'は'sam'または'sam.exe'を書き込みます。 87 // 'go build example.com/foo/v2'は'foo'または'foo.exe'を書き込み、'v2.exe'ではありません。 88 // 89 // .goファイルのリストからパッケージをコンパイルするとき、実行可能ファイルは 90 // 最初のソースファイルに基づいて名付けられます。 91 // 'go build ed.go rx.go'は'ed'または'ed.exe'を書き込みます。 92 // 93 // 複数のパッケージをコンパイルするか、単一の非mainパッケージをコンパイルするとき、 94 // buildはパッケージをコンパイルしますが、結果となるオブジェクトは破棄し、 95 // パッケージがビルド可能であることをチェックするだけです。 96 // 97 // -oフラグは、buildに結果となる実行可能ファイルまたはオブジェクトを 98 // 名前付きの出力ファイルまたはディレクトリに書き込むように強制します、 99 // これは最後の2つの段落で説明されたデフォルトの動作とは異なります。 100 // 名前付きの出力が既存のディレクトリであるか、 101 // スラッシュまたはバックスラッシュで終わる場合、結果となる実行可能ファイルは 102 // そのディレクトリに書き込まれます。 103 // 104 // ビルドフラグは、build、clean、get、install、list、run、 105 // およびtestコマンドで共有されます: 106 // 107 // -C dir 108 // コマンドを実行する前にdirに移動します。 109 // コマンドラインで指定された任意のファイルは、 110 // ディレクトリを変更した後で解釈されます。 111 // 使用する場合、このフラグはコマンドラインの最初のものでなければなりません。 112 // -a 113 // すでに最新のパッケージの再ビルドを強制します。 114 // -n 115 // コマンドを表示しますが、実行はしません。 116 // -p n 117 // ビルドコマンドやテストバイナリなどのプログラムが、 118 // 並行して実行できる数です。 119 // デフォルトはGOMAXPROCSで、通常は利用可能なCPUの数です。 120 // -race 121 // データ競合の検出を有効にします。 122 // linux/amd64、freebsd/amd64、darwin/amd64、darwin/arm64、windows/amd64、 123 // linux/ppc64le、およびlinux/arm64(48ビットVMAのみ)でのみサポートされています。 124 // -msan 125 // メモリサニタイザとの相互運用を有効にします。 126 // これはlinux/amd64、linux/arm64、linux/loong64、freebsd/amd64でのみサポートされており、 127 // ホストのCコンパイラとしてClang/LLVMを使用する場合に限ります。 128 // PIEビルドモードはlinux/amd64を除くすべてのプラットフォームで使用されます。 129 // -asan 130 // アドレスサニタイザとの相互運用を有効にします。 131 // これはlinux/arm64、linux/amd64、linux/loong64でのみサポートされています。 132 // linux/amd64またはlinux/arm64では、GCC 7以上またはClang/LLVM 9以上でのみサポートされています。 133 // また、linux/loong64ではClang/LLVM 16以上でのみサポートされています。 134 // -cover 135 // コードカバレッジ計測を有効にします。 136 // -covermode set,count,atomic 137 // カバレッジ分析のモードを設定します。 138 // デフォルトは "set" ですが、-raceが有効になっている場合は "atomic" です。 139 // 値: 140 // set: bool: このステートメントは実行されますか? 141 // count: int: このステートメントは何回実行されますか? 142 // atomic: int: count、ただしマルチスレッドテストでは正確です。 143 // かなり高価です。 144 // -coverを設定します。 145 // -coverpkg pattern1,pattern2,pattern3 146 // 'メイン'パッケージをターゲットとするビルド(つまり、Go実行可能ファイルをビルドする)の場合、 147 // 各パターンに一致するパッケージに対してカバレッジ分析を適用します。 148 // デフォルトでは、メインのGoモジュール内のパッケージにカバレッジ分析を適用します。 149 // パッケージパターンの説明については、「go help packages」を参照してください。-coverを設定します。 150 // -v 151 // コンパイルされるパッケージの名前を表示します。 152 // -work 153 // 一時的な作業ディレクトリの名前を表示し、 154 // 終了時にそれを削除しません。 155 // -x 156 // コマンドを表示します。 157 // -asmflags '[pattern=]arg list' 158 // 各go tool asm呼び出しに渡す引数。 159 // -buildmode mode 160 // 使用するビルドモード。詳細については、「go help buildmode」を参照してください。 161 // -buildvcs 162 // バイナリにバージョン管理情報をスタンプするかどうか 163 // ("true"、"false"、または "auto")。デフォルト("auto")では、メインパッケージ、 164 // それを含むメインモジュール、および現在のディレクトリがすべて同じリポジトリにある場合、 165 // バージョン管理情報がバイナリにスタンプされます。 166 // 常にバージョン管理情報を省略するには、-buildvcs=falseを使用します。また、 167 // バージョン管理情報が利用可能であるが、ツールが欠けているかディレクトリ構造が曖昧であるために 168 // 含めることができない場合にエラーを出すには、-buildvcs=trueを使用します。 169 // -compiler name 170 // 使用するコンパイラの名前、runtime.Compiler(gccgoまたはgc)と同様。 171 // -gccgoflags '[pattern=]arg list' 172 // 各gccgoコンパイラ/リンカー呼び出しに渡す引数。 173 // -gcflags '[pattern=]arg list' 174 // 各go tool compile呼び出しに渡す引数。 175 // -installsuffix suffix 176 // パッケージインストールディレクトリの名前に使用する接尾辞、 177 // デフォルトのビルドから出力を分けて保持するため。 178 // -raceフラグを使用している場合、インストール接尾辞は自動的にraceに設定されます 179 // または、明示的に設定されている場合、_raceが追加されます。同様に-msan 180 // および-asanフラグについても同様です。デフォルト以外のコンパイル 181 // フラグが必要な-buildmodeオプションを使用すると、同様の効果があります。 182 // -ldflags '[pattern=]arg list' 183 // 各go tool link呼び出しに渡す引数。 184 // -linkshared 185 // -buildmode=sharedで以前に作成された共有ライブラリに対してリンクされるコードをビルドします。 186 // -mod mode 187 // 使用するモジュールのダウンロードモード: readonly、vendor、またはmod。 188 // デフォルトでは、vendorディレクトリが存在し、go.modのgoバージョンが1.14以上の場合、 189 // goコマンドは-mod=vendorが設定されているかのように動作します。 190 // それ以外の場合、goコマンドは-mod=readonlyが設定されているかのように動作します。 191 // 詳細はhttps://golang.org/ref/mod#build-commandsを参照してください。 192 // -modcacherw 193 // モジュールキャッシュ内の新しく作成されたディレクトリを読み取り専用ではなく、 194 // 読み書き可能にします。 195 // -modfile file 196 // モジュール対応モードでは、モジュールのルートディレクトリにあるものではなく、 197 // 代替のgo.modファイルを読み込み(および可能な場合は書き込み)します。 198 // "go.mod"という名前のファイルは、モジュールのルートディレクトリを決定するために 199 // 存在していなければなりませんが、アクセスされません。 200 // -modfileが指定されている場合、代替のgo.sumファイルも使用されます。 201 // そのパスは、".mod"拡張子をトリミングして".sum"を追加することで-modfileフラグから派生します。 202 // -overlay file 203 // ビルド操作のオーバーレイを提供するJSON設定ファイルを読み込みます。 204 // ファイルは、'Replace'という名前の単一のフィールドを持つJSON構造で、 205 // 各ディスクファイルパス(文字列)をそのバッキングファイルパスにマッピングします。 206 // これにより、ビルドはディスクファイルパスがバッキングファイルパスによって与えられた内容で存在するかのように、 207 // またはバッキングファイルパスが空の場合はディスクファイルパスが存在しないかのように実行されます。 208 // -overlayフラグのサポートにはいくつかの制限があります。 209 // 重要な点として、インクルードパスの外部から含まれるcgoファイルは、それらが含まれるGoパッケージと同じディレクトリに 210 // 存在しなければならず、オーバーレイはgo runおよびgo testを通じて実行されるバイナリとテストには表示されません。 211 // -pgo file 212 // プロファイルガイド付き最適化(PGO)のプロファイルのファイルパスを指定します。 213 // 特別な名前"auto"が指定された場合、ビルドの各メインパッケージについて、 214 // そのパッケージのディレクトリに"default.pgo"という名前のファイルが存在する場合、 215 // goコマンドはそれを選択し、それをメインパッケージの(トランジティブな)依存関係に適用します 216 // (他のパッケージには影響しません)。特別な名前"off"はPGOをオフにします。デフォルトは"auto"です。 217 // -pkgdir dir 218 // 通常の場所ではなく、dirからすべてのパッケージをインストールしてロードします。 219 // 例えば、非標準の設定でビルドする場合、生成されたパッケージを別の場所に保持するために-pkgdirを使用します。 220 // -tags tag,list 221 // ビルド中に満足させるための追加のビルドタグのカンマ区切りリスト。 222 // ビルドタグについての詳細は'go help buildconstraint'を参照してください。 223 // (Goの早いバージョンではスペース区切りのリストを使用していましたが、その形式は非推奨ですがまだ認識されます。) 224 // -trimpath 225 // 結果の実行可能ファイルからすべてのファイルシステムパスを削除します。 226 // 絶対ファイルシステムパスの代わりに、記録されたファイル名はモジュールパス@バージョン(モジュールを使用する場合)で始まるか、 227 // またはプレーンなインポートパス(標準ライブラリ、またはGOPATHを使用する場合)で始まります。 228 // -toolexec 'cmd args' 229 // vetやasmのようなツールチェーンプログラムを起動するために使用するプログラム。 230 // 例えば、asmを実行する代わりに、goコマンドは'cmd args /path/to/asm <arguments for asm>'を実行します。 231 // TOOLEXEC_IMPORTPATH環境変数が設定され、ビルドされているパッケージの'go list -f {{.ImportPath}}'に一致します。 232 // 233 // -asmflags、-gccgoflags、-gcflags、および-ldflagsフラグは、 234 // ビルド中に基礎となるツールに渡すためのスペースで区切られた引数のリストを受け入れます。 235 // リストの要素にスペースを埋め込むには、それをシングルクォートまたはダブルクォートで囲みます。 236 // 引数リストは、パッケージパターンと等号によって先行することができ、 237 // それはその引数リストの使用を、そのパターンに一致するパッケージのビルドに制限します 238 // (パッケージパターンの説明については'go help packages'を参照してください)。 239 // パターンがない場合、引数リストはコマンドライン上で名前が付けられたパッケージにのみ適用されます。 240 // フラグは、異なるパッケージのセットに対して異なる引数を指定するために、 241 // 異なるパターンで繰り返すことができます。 242 // パッケージが複数のフラグで与えられたパターンに一致する場合、 243 // コマンドライン上で最新の一致が勝ちます。 244 // 例えば、'go build -gcflags=-S fmt'は、パッケージfmtのみの逆アセンブルを出力しますが、 245 // 'go build -gcflags=all=-S fmt'は、fmtとそのすべての依存関係の逆アセンブルを出力します。 246 // 247 // パッケージの指定についての詳細は、'go help packages'を参照してください。 248 // パッケージとバイナリがインストールされる場所についての詳細は、 249 // 'go help gopath'を実行してください。 250 // GoとC/C++間の呼び出しについての詳細は、'go help c'を実行してください。 251 // 252 // 注意: Buildは、'go help gopath'で説明されているような特定の規約に従います。 253 // しかし、すべてのプロジェクトがこれらの規約に従うわけではありません。 254 // 独自の規約を持つインストールや別のソフトウェアビルドシステムを使用するインストールは、 255 // ビルドツールの一部のオーバーヘッドと設計決定を避けるために、 256 // 'go tool compile'や'go tool link'などの低レベルの呼び出しを選択することができます。 257 // 258 // 参照してください: go install, go get, go clean. 259 // 260 // # Remove object files and cached files 261 // 262 // 使用法: 263 // 264 // go clean [cleanフラグ] [buildフラグ] [パッケージ] 265 // 266 // Cleanはパッケージソースディレクトリからオブジェクトファイルを削除します。 267 // goコマンドはほとんどのオブジェクトを一時ディレクトリでビルドするため、 268 // go cleanは主に他のツールによって残されたオブジェクトファイルや、 269 // 手動でのgo buildの呼び出しによって残されたオブジェクトファイルを対象としています。 270 // 271 // パッケージ引数が与えられた場合、または-iまたは-rフラグが設定されている場合、 272 // cleanはインポートパスに対応する各ソースディレクトリから以下のファイルを削除します: 273 // 274 // _obj/ Makefilesから残された古いオブジェクトディレクトリ 275 // _test/ Makefilesから残された古いテストディレクトリ 276 // _testmain.go Makefilesから残された古いgotestファイル 277 // test.out Makefilesから残された古いテストログ 278 // build.out Makefilesから残された古いテストログ 279 // *.[568ao] Makefilesから残されたオブジェクトファイル 280 // 281 // DIR(.exe) go buildから 282 // DIR.test(.exe) go test -cから 283 // MAINFILE(.exe) go build MAINFILE.goから 284 // *.so SWIGから 285 // 286 // リストでは、DIRはディレクトリの最終パス要素を表し、 287 // MAINFILEはパッケージをビルドする際に含まれないディレクトリ内の任意のGoソースファイルのベース名を表します。 288 // 289 // -iフラグは、cleanに対応するインストール済みのアーカイブまたはバイナリ('go install'が作成するもの)を削除するように指示します。 290 // 291 // -nフラグは、cleanが実行する削除コマンドを表示するが、それらを実行しないようにします。 292 // 293 // -rフラグは、cleanをインポートパスで指定されたパッケージのすべての依存関係に再帰的に適用するようにします。 294 // 295 // -xフラグは、cleanがそれを実行するときに削除コマンドを表示するようにします。 296 // 297 // -cacheフラグは、cleanがgoビルドキャッシュ全体を削除するようにします。 298 // 299 // -testcacheフラグは、cleanがgoビルドキャッシュ内のすべてのテスト結果を期限切れにするようにします。 300 // 301 // -modcacheフラグは、cleanがモジュールダウンロードキャッシュ全体、バージョン付き依存関係の展開されたソースコードを含むものを削除するようにします。 302 // 303 // -fuzzcacheフラグは、cleanがGoビルドキャッシュに保存されたファズテスト用のファイルを削除するようにします。ファジングエンジンはコードカバレッジを拡大するファイルをキャッシュするため、それらを削除すると、同じカバレッジを提供する新しい入力が見つかるまでのファジングが効果的でなくなる可能性があります。これらのファイルはtestdataディレクトリに保存されたものとは異なり、cleanはそれらのファイルを削除しません。 304 // 305 // ビルドフラグについての詳細は、'go help build'を参照してください。 306 // 307 // パッケージの指定についての詳細は、'go help packages'を参照してください。 308 // 309 // # Show documentation for package or symbol 310 // 311 // 使用法: 312 // 313 // go doc [docフラグ] [パッケージ|[パッケージ.]シンボル[.メソッドまたはフィールド]] 314 // 315 // Docは、その引数で識別される項目(パッケージ、const、func、type、var、method、またはstruct field)に関連付けられた 316 // ドキュメンテーションコメントを印刷し、その項目の"下"の各第一レベル項目(パッケージの場合はパッケージレベルの宣言、 317 // typeの場合はメソッドなど)の1行の要約を続けて印刷します。 318 // 319 // Docはゼロ、一つ、または二つの引数を受け入れます。 320 // 321 // 引数がない場合、つまり 322 // 323 // go doc 324 // 325 // として実行された場合、現在のディレクトリのパッケージに対するパッケージドキュメンテーションを印刷します。 326 // パッケージがコマンド(パッケージmain)である場合、パッケージのエクスポートされたシンボルは、-cmdフラグが提供されない限り、 327 // プレゼンテーションから省略されます。 328 // 329 // 引数が一つ与えられた場合、その引数はドキュメント化されるべき項目のGo構文のような表現として扱われます。 330 // 引数が選択するものは、GOROOTとGOPATHに何がインストールされているか、および引数の形式によります。 331 // 形式は概ね以下のいずれかです: 332 // 333 // go doc <pkg> 334 // go doc <sym>[.<methodOrField>] 335 // go doc [<pkg>.]<sym>[.<methodOrField>] 336 // go doc [<pkg>.][<sym>.]<methodOrField> 337 // 338 // 引数によって一致したこのリストの最初の項目が、そのドキュメンテーションが印刷されるものです。 339 // (以下の例を参照してください。)ただし、引数が大文字で始まる場合、それは現在のディレクトリのシンボルまたはメソッドを識別するものとみなされます。 340 // 341 // パッケージの場合、スキャンの順序は、幅優先順序で辞書順に決定されます。 342 // つまり、提示されるパッケージは、検索に一致し、ルートに最も近く、階層のそのレベルで辞書順に最初のものです。 343 // GOROOTツリーは、常にGOPATHの前に全体がスキャンされます。 344 // 345 // パッケージが指定されていないか一致しない場合、現在のディレクトリのパッケージが選択されます。 346 // したがって、"go doc Foo"は、現在のパッケージのシンボルFooのドキュメンテーションを表示します。 347 // 348 // パッケージパスは、修飾されたパスまたはパスの適切なサフィックスでなければなりません。 349 // goツールの通常のパッケージメカニズムは適用されません:パッケージパス要素のような.や...はgo docによって実装されていません。 350 // 351 // 2つの引数で実行された場合、最初の引数はパッケージパス(完全なパスまたはサフィックス)であり、 352 // 2つ目はシンボル、またはメソッドまたは構造体フィールドを持つシンボルです: 353 // 354 // go doc <pkg> <sym>[.<methodOrField>] 355 // 356 // すべての形式で、シンボルをマッチングするとき、引数の小文字はどちらのケースでも一致しますが、大文字は正確に一致します。 357 // これは、異なるシンボルが異なるケースを持つ場合、パッケージ内で小文字の引数の複数のマッチがある可能性があることを意味します。 358 // これが発生した場合、すべてのマッチのドキュメンテーションが印刷されます。 359 // 360 // 例: 361 // 362 // go doc 363 // 現在のパッケージのドキュメンテーションを表示します。 364 // go doc Foo 365 // 現在のパッケージのFooに関するドキュメンテーションを表示します。 366 // (Fooは大文字で始まるため、パッケージパスと一致することはありません。) 367 // go doc encoding/json 368 // encoding/jsonパッケージのドキュメンテーションを表示します。 369 // go doc json 370 // encoding/jsonの省略形です。 371 // go doc json.Number (または go doc json.number) 372 // json.Numberのドキュメンテーションとメソッドの概要を表示します。 373 // go doc json.Number.Int64 (または go doc json.number.int64) 374 // json.NumberのInt64メソッドのドキュメンテーションを表示します。 375 // go doc cmd/doc 376 // docコマンドのパッケージドキュメンテーションを表示します。 377 // go doc -cmd cmd/doc 378 // docコマンド内のパッケージドキュメンテーションとエクスポートされたシンボルを表示します。 379 // go doc template.new 380 // html/templateのNew関数のドキュメンテーションを表示します。 381 // (html/templateは辞書順でtext/templateの前に来ます) 382 // go doc text/template.new # 引数が一つ 383 // text/templateのNew関数のドキュメンテーションを表示します。 384 // go doc text/template new # 引数が二つ 385 // text/templateのNew関数のドキュメンテーションを表示します。 386 // 387 // 少なくとも現在のツリーでは、これらの呼び出しはすべてjson.DecoderのDecodeメソッドの 388 // ドキュメンテーションを印刷します: 389 // 390 // go doc json.Decoder.Decode 391 // go doc json.decoder.decode 392 // go doc json.decode 393 // cd go/src/encoding/json; go doc decode 394 // 395 // フラグ: 396 // 397 // -all 398 // パッケージのすべてのドキュメンテーションを表示します。 399 // -c 400 // シンボルのマッチング時に大文字と小文字を区別します。 401 // -cmd 402 // コマンド(パッケージmain)を通常のパッケージとして扱います。 403 // それ以外の場合、パッケージmainのエクスポートされたシンボルは、 404 // パッケージのトップレベルのドキュメンテーションを表示するときに隠されます。 405 // -short 406 // 各シンボルの一行表現を表示します。 407 // -src 408 // シンボルの完全なソースコードを表示します。これにより、 409 // その宣言と定義の完全なGoソースが表示されます。例えば、関数の定義(本体を含む)、 410 // 型の宣言、または囲むconstブロックなどです。そのため、出力にはエクスポートされていない詳細が含まれる可能性があります。 411 // -u 412 // エクスポートされたシンボル、メソッド、フィールドだけでなく、エクスポートされていないもののドキュメンテーションも表示します。 413 // 414 // # Print Go environment information 415 // 416 // 使用法: 417 // 418 // go env [-json] [-u] [-w] [var ...] 419 // 420 // EnvはGo環境情報を表示します。 421 // 422 // デフォルトでは、envは情報をシェルスクリプトとして表示します 423 // (Windowsでは、バッチファイル)。一つ以上の変数名が引数として 424 // 与えられた場合、envは各名前付き変数の値をそれぞれの行に表示します。 425 // 426 // -jsonフラグは、環境をシェルスクリプトではなくJSON形式で表示します。 427 // 428 // -uフラグは一つ以上の引数を必要とし、指定された環境変数のデフォルト設定を解除します。 429 // これは、'go env -w'で設定されている場合に適用されます。 430 // 431 // -wフラグは、形式がNAME=VALUEの一つ以上の引数を必要とし、指定された環境変数のデフォルト設定を 432 // 与えられた値に変更します。 433 // 434 // 環境変数についての詳細は、'go help environment'を参照してください。 435 // 436 // # Update packages to use new APIs 437 // 438 // 使用法: 439 // 440 // go fix [-fix list] [packages] 441 // 442 // Fixは、インポートパスで指定されたパッケージにGo fixコマンドを実行します。 443 // 444 // -fixフラグは、実行する修正のカンマ区切りのリストを設定します。 445 // デフォルトはすべての既知の修正です。 446 // (その値は 'go tool fix -r'に渡されます。) 447 // 448 // fixについての詳細は、'go doc cmd/fix'を参照してください。 449 // パッケージの指定についての詳細は、'go help packages'を参照してください。 450 // 451 // 他のオプションでfixを実行するには、'go tool fix'を実行します。 452 // 453 // 参照してください: go fmt, go vet. 454 // 455 // # Gofmt (reformat) package sources 456 // 457 // 使用法: 458 // 459 // go fmt [-n] [-x] [packages] 460 // 461 // Fmtは、インポートパスで指定されたパッケージに対してコマンド 'gofmt -l -w' を実行します。 462 // それは変更されたファイルの名前を出力します。 463 // 464 // gofmtについての詳細は、'go doc cmd/gofmt'を参照してください。 465 // パッケージの指定についての詳細は、'go help packages'を参照してください。 466 // 467 // -nフラグは実行されるコマンドを出力します。 468 // -xフラグはコマンドを実行するときにそれを出力します。 469 // 470 // -modフラグの値は、どのモジュールダウンロードモードを使用するかを設定します:readonlyまたはvendor。 471 // 詳細は 'go help modules' を参照してください。 472 // 473 // 特定のオプションでgofmtを実行するには、gofmt自体を実行します。 474 // 475 // 参照してください: go fix, go vet. 476 // 477 // # Generate Go files by processing source 478 // 479 // 使用法: 480 // 481 // go generate [-run regexp] [-n] [-v] [-x] [build flags] [file.go... | packages] 482 // 483 // Generateは、既存のファイル内のディレクティブによって記述されたコマンドを実行します。 484 // これらのコマンドは任意のプロセスを実行できますが、目的はGoソースファイルを作成または更新することです。 485 // 486 // Go generateは、go build、go testなどによって自動的には実行されません。 487 // 明示的に実行する必要があります。 488 // 489 // Go generateは、ファイルをスキャンしてディレクティブを探します。これらは、 490 // 以下の形式の行です。 491 // 492 // //go:generate command argument... 493 // 494 // (注意: 先頭にスペースはなく、"//go"の中にもスペースはありません) ここで、command 495 // はローカルで実行できる実行可能ファイルに対応する、実行するジェネレータです。 496 // それはシェルパス内に存在する必要があります(gofmt)、完全に修飾されたパスである必要があります 497 // (/usr/you/bin/mytool)、または以下で説明するコマンドエイリアスである必要があります。 498 // 499 // go generateはファイルを解析しないことに注意してください。そのため、コメントや 500 // 複数行の文字列の中にあるディレクティブのように見える行は、ディレクティブとして扱われます。 501 // 502 // ディレクティブへの引数は、スペースで区切られたトークンまたはダブルクォートで囲まれた 503 // 文字列で、それらはジェネレータに個別の引数として渡されます。 504 // 505 // 引用符で囲まれた文字列はGoの構文を使用し、実行前に評価されます。引用符で囲まれた 506 // 文字列はジェネレータへの単一の引数として現れます。 507 // 508 // コードが生成されることを人間とマシンツールに伝えるために、生成されたソースには、 509 // 以下の正規表現(Goの構文)に一致する行が存在するべきです: 510 // 511 // ^// Code generated .* DO NOT EDIT\.$ 512 // 513 // この行は、ファイル内の最初の非コメント、非空白の 514 // テキストの前に現れなければなりません。 515 // 516 // Go generateは、ジェネレータを実行するときにいくつかの変数を設定します: 517 // 518 // $GOARCH 519 // 実行アーキテクチャ(arm、amd64など) 520 // $GOOS 521 // 実行オペレーティングシステム(linux、windowsなど) 522 // $GOFILE 523 // ファイルのベース名。 524 // $GOLINE 525 // ソースファイル内のディレクティブの行番号。 526 // $GOPACKAGE 527 // ディレクティブを含むファイルのパッケージ名。 528 // $GOROOT 529 // ジェネレータを起動した 'go' コマンドの GOROOT ディレクトリ。 530 // これにはGoツールチェーンと標準ライブラリが含まれます。 531 // $DOLLAR 532 // ドル記号。 533 // $PATH 534 // 親プロセスの $PATH。$GOROOT/bin が 535 // 先頭に配置されます。これにより、'go' コマンドを実行するジェネレータは 536 // 親の 'go generate' コマンドと同じ 'go' を使用します。 537 // 538 // 変数の置換と引用文字列の評価以外に、コマンドライン上で 539 // "globbing"のような特別な処理は行われません。 540 // 541 // コマンドを実行する前の最後のステップとして、$GOFILEや 542 // $HOMEなど、英数字の名前を持つ環境変数の呼び出しが、 543 // コマンドライン全体で展開されます。変数の展開の構文は 544 // すべてのオペレーティングシステムで$NAMEです。評価の 545 // 順序により、変数は引用文字列の中でも展開されます。 546 // 変数NAMEが設定されていない場合、$NAMEは空の文字列に 547 // 展開されます。 548 // 549 // 以下の形式のディレクティブ 550 // 551 // //go:generate -command xxx args... 552 // 553 // は、このソースファイルの残りの部分についてのみ、文字列xxxが引数によって 554 // 識別されるコマンドを表すことを指定します。これはエイリアスを作成したり、 555 // 複数の単語を持つジェネレータを処理したりするために使用できます。 556 // 例えば、 557 // 558 // //go:generate -command foo go tool foo 559 // 560 // は、コマンド "foo" がジェネレータ "go tool foo" を表すことを指定します。 561 // 562 // Generateは、コマンドラインで与えられた順序でパッケージを処理します、 563 // 一度に一つずつ。コマンドラインが単一のディレクトリからの.goファイルを 564 // リストしている場合、それらは単一のパッケージとして扱われます。パッケージ内では、 565 // generateはパッケージ内のソースファイルをファイル名順に一つずつ処理します。 566 // ソースファイル内では、generateはファイル内に現れる順序でジェネレータを実行します、 567 // 一度に一つずつ。go generateツールはまた、ビルドタグ "generate" を設定するので、 568 // ファイルはgo generateによって調査されるが、ビルド中には無視されます。 569 // 570 // コードが無効なパッケージの場合、generateは有効なパッケージ節を持つソースファイルのみを処理します。 571 // 572 // 任意のジェネレータがエラー終了ステータスを返すと、"go generate"はそのパッケージの 573 // すべてのさらなる処理をスキップします。 574 // 575 // ジェネレータはパッケージのソースディレクトリで実行されます。 576 // 577 // Go generateは2つの特定のフラグを受け入れます: 578 // 579 // -run="" 580 // 非空の場合、フルオリジナルソーステキスト(末尾のスペースと 581 // 最終改行を除く)が表現に一致するディレクティブを選択するための 582 // 正規表現を指定します。 583 // 584 // -skip="" 585 // 非空の場合、フルオリジナルソーステキスト(末尾のスペースと 586 // 最終改行を除く)が表現に一致するディレクティブを抑制するための 587 // 正規表現を指定します。ディレクティブが-runと-skipの両方の引数に 588 // 一致する場合、それはスキップされます。 589 // 590 // また、-v、-n、および-xを含む標準のビルドフラグも受け入れます。 591 // -vフラグは、処理されるパッケージとファイルの名前を出力します。 592 // -nフラグは実行されるコマンドを出力します。 593 // -xフラグはコマンドを実行するときにそれを出力します。 594 // 595 // ビルドフラグの詳細については、'go help build'を参照してください。 596 // 597 // パッケージの指定についての詳細は、'go help packages'を参照してください。 598 // 599 // # Add dependencies to current module and install them 600 // 601 // 使用法: 602 // 603 // go get [-t] [-u] [-v] [build flags] [packages] 604 // 605 // Getは、コマンドライン引数を特定のモジュールバージョンのパッケージに解決し、 606 // go.modを更新してそれらのバージョンを要求し、ソースコードをモジュールキャッシュにダウンロードします。 607 // 608 // パッケージの依存関係を追加したり、最新バージョンにアップグレードするには: 609 // 610 // go get example.com/pkg 611 // 612 // パッケージを特定のバージョンにアップグレードまたはダウングレードするには: 613 // 614 // go get example.com/pkg@v1.2.3 615 // 616 // モジュールへの依存関係を削除し、それを必要とするモジュールをダウングレードするには: 617 // 618 // go get example.com/mod@none 619 // 620 // 最小必要Goバージョンを最新リリースのGoバージョンにアップグレードするには: 621 // 622 // go get go@latest 623 // 624 // Goツールチェーンを現在のGoツールチェーンの最新パッチリリースにアップグレードするには: 625 // 626 // go get toolchain@patch 627 // 628 // 詳細は https://golang.org/ref/mod#go-get を参照してください。 629 // 630 // Goの初期のバージョンでは、'go get'はパッケージのビルドとインストールに使用されていました。 631 // 現在では、'go get'はgo.mod内の依存関係の調整に専用化されています。代わりに'go install' 632 // を使用してコマンドをビルドおよびインストールできます。バージョンが指定されている場合、 633 // 'go install'はモジュール対応モードで実行され、現在のディレクトリのgo.modファイルは無視されます。 634 // 例えば: 635 // 636 // go install example.com/pkg@v1.2.3 637 // go install example.com/pkg@latest 638 // 639 // 詳細は 'go help install' または https://golang.org/ref/mod#go-install を参照してください。 640 // 641 // 'go get'は以下のフラグを受け入れます。 642 // 643 // -tフラグは、getにコマンドラインで指定されたパッケージのテストをビルドするために必要なモジュールを考慮するよう指示します。 644 // 645 // -uフラグは、getにコマンドラインで指定されたパッケージの依存関係を提供するモジュールを更新し、利用可能な場合は新しいマイナーリリースまたはパッチリリースを使用するよう指示します。 646 // 647 // -u=patchフラグ(-u patchではない)もまた、getに依存関係を更新するよう指示しますが、デフォルトをパッチリリースを選択するように変更します。 648 // 649 // -tフラグと-uフラグが一緒に使用されると、getはテスト依存関係も更新します。 650 // 651 // -xフラグは、実行されるコマンドを出力します。これは、モジュールが直接リポジトリからダウンロードされるときにバージョン管理コマンドをデバッグするのに便利です。 652 // 653 // モジュールについての詳細は、https://golang.org/ref/mod を参照してください。 654 // 655 // 'go get'を使用して最小のGoバージョンと推奨されるGoツールチェーンを更新する方法についての詳細は、https://go.dev/doc/toolchain を参照してください。 656 // 657 // パッケージの指定についての詳細は、'go help packages'を参照してください。 658 // 659 // このテキストは、ソースコードと依存関係の管理にモジュールを使用してgetの動作を説明しています。代わりにgoコマンドがGOPATHモードで実行されている場合、getのフラグと効果の詳細が変わり、'go help get'も変わります。'go help gopath-get'を参照してください。 660 // 661 // 参照してください: go build, go install, go clean, go mod. 662 // 663 // # Compile and install packages and dependencies 664 // 665 // 使用法: 666 // 667 // go install [build flags] [packages] 668 // 669 // Installは、インポートパスで指定されたパッケージをコンパイルしてインストールします。 670 // 671 // 実行可能ファイルは、GOBIN環境変数で指定されたディレクトリにインストールされます。 672 // これは、GOPATH環境変数が設定されていない場合、デフォルトで$GOPATH/binまたは$HOME/go/binになります。 673 // $GOROOT内の実行可能ファイルは、$GOBINではなく$GOROOT/binまたは$GOTOOLDIRにインストールされます。 674 // 675 // 引数にバージョン接尾辞(@latestや@v1.0.0のような)がある場合、"go install"は 676 // モジュール対応モードでパッケージをビルドし、現在のディレクトリや親ディレクトリにある 677 // go.modファイルを無視します。これは、メインモジュールの依存関係に影響を与えずに 678 // 実行可能ファイルをインストールするのに便利です。 679 // ビルドで使用されるモジュールのバージョンについての曖昧性を排除するために、 680 // 引数は以下の制約を満たさなければなりません: 681 // 682 // - 引数はパッケージパスまたはパッケージパターン("..."ワイルドカード付き)でなければなりません。 683 // 標準パッケージ(fmtのような)、メタパターン(std、cmd、all)、または相対または絶対ファイルパスであってはなりません。 684 // 685 // - すべての引数は同じバージョン接尾辞を持たなければなりません。同じバージョンを参照していても、異なるクエリは許可されません。 686 // 687 // - すべての引数は、同じバージョンの同じモジュール内のパッケージを参照しなければなりません。 688 // 689 // - パッケージパス引数はmainパッケージを参照しなければなりません。パターン引数はmainパッケージのみに一致します。 690 // 691 // - "main"モジュールと見なされるモジュールはありません。コマンドラインで指定されたパッケージを含むモジュールにgo.modファイルがある場合、それはmainモジュールであるかのように解釈されるのと異なる方法で解釈されるような指示(replaceとexclude)を含んではなりません。モジュールは自身のより高いバージョンを要求してはなりません。 692 // 693 // - ベンダーディレクトリはどのモジュールでも使用されません。(ベンダーディレクトリは'go install'によってダウンロードされるモジュールのzipファイルに含まれません。) 694 // 695 // 引数にバージョン接尾辞がない場合、"go install"はGO111MODULE環境変数とgo.modファイルの存在に応じて、 696 // モジュール対応モードまたはGOPATHモードで実行される可能性があります。詳細は'go help modules'を参照してください。 697 // モジュール対応モードが有効になっている場合、"go install"はメインモジュールのコンテキストで実行されます。 698 // 699 // モジュール対応モードが無効になっている場合、非メインパッケージはディレクトリ$GOPATH/pkg/$GOOS_$GOARCHにインストールされます。 700 // モジュール対応モードが有効になっている場合、非メインパッケージはビルドされてキャッシュされますが、インストールされません。 701 // 702 // Go 1.20より前では、標準ライブラリは$GOROOT/pkg/$GOOS_$GOARCHにインストールされていました。 703 // Go 1.20からは、標準ライブラリはビルドされてキャッシュされますが、インストールされません。 704 // GODEBUG=installgoroot=allを設定すると、$GOROOT/pkg/$GOOS_$GOARCHの使用が復元されます。 705 // 706 // ビルドフラグについての詳細は、'go help build'を参照してください。 707 // 708 // パッケージの指定についての詳細は、'go help packages'を参照してください。 709 // 710 // 参照してください: go build, go get, go clean. 711 // 712 // # List packages or modules 713 // 714 // 使用法: 715 // 716 // go list [-f format] [-json] [-m] [list flags] [build flags] [packages] 717 // 718 // Listは、指定されたパッケージを一行に一つずつリストアップします。 719 // 最も一般的に使用されるフラグは-fと-jsonで、これらは各パッケージに対して出力される形式を制御します。 720 // 他のlistフラグは、以下で説明されているように、より具体的な詳細を制御します。 721 // 722 // デフォルトの出力はパッケージのインポートパスを表示します: 723 // 724 // bytes 725 // encoding/json 726 // github.com/gorilla/mux 727 // golang.org/x/net/html 728 // 729 // -fフラグは、リストの代替形式を指定します。これはパッケージテンプレートの構文を使用します。 730 // デフォルトの出力は-f '{{.ImportPath}}'と同等です。テンプレートに渡される構造体は: 731 // 732 // type Package struct { 733 // Dir string // パッケージソースが含まれるディレクトリ 734 // ImportPath string // dir内のパッケージのインポートパス 735 // ImportComment string // パッケージステートメントのインポートコメントのパス 736 // Name string // パッケージ名 737 // Doc string // パッケージのドキュメンテーション文字列 738 // Target string // インストールパス 739 // Shlib string // このパッケージを含む共有ライブラリ(-linksharedを使用するときのみ設定) 740 // Goroot bool // このパッケージはGo rootにありますか? 741 // Standard bool // このパッケージは標準のGoライブラリの一部ですか? 742 // Stale bool // 'go install'はこのパッケージに対して何かを行いますか? 743 // StaleReason string // Stale==trueの説明 744 // Root string // このパッケージを含むGo rootまたはGo path dir 745 // ConflictDir string // このディレクトリは$GOPATH内のDirをシャドウします 746 // BinaryOnly bool // バイナリのみのパッケージ(もはやサポートされていません) 747 // ForTest string // パッケージは名前付きテストでのみ使用されます 748 // Export string // エクスポートデータを含むファイル(-exportを使用するとき) 749 // BuildID string // コンパイルされたパッケージのビルドID(-exportを使用するとき) 750 // Module *Module // パッケージの含まれるモジュールに関する情報、もしあれば(nilにできます) 751 // Match []string // このパッケージに一致するコマンドラインパターン 752 // DepOnly bool // パッケージは依存関係のみで、明示的にリストされていません 753 // DefaultGODEBUG string // メインパッケージのデフォルトのGODEBUG設定 754 // 755 // // ソースファイル 756 // GoFiles []string // .goソースファイル(CgoFiles、TestGoFiles、XTestGoFilesを除く) 757 // CgoFiles []string // "C"をインポートする.goソースファイル 758 // CompiledGoFiles []string // コンパイラに提示される.goファイル(-compiledを使用するとき) 759 // IgnoredGoFiles []string // ビルド制約により無視される.goソースファイル 760 // IgnoredOtherFiles []string // ビルド制約により無視される非.goソースファイル 761 // CFiles []string // .cソースファイル 762 // CXXFiles []string // .cc、.cxxおよび.cppソースファイル 763 // MFiles []string // .mソースファイル 764 // HFiles []string // .h、.hh、.hppおよび.hxxソースファイル 765 // FFiles []string // .f、.F、.forおよび.f90 Fortranソースファイル 766 // SFiles []string // .sソースファイル 767 // SwigFiles []string // .swigファイル 768 // SwigCXXFiles []string // .swigcxxファイル 769 // SysoFiles []string // アーカイブに追加する.sysoオブジェクトファイル 770 // TestGoFiles []string // パッケージ内の_test.goファイル 771 // XTestGoFiles []string // パッケージ外の_test.goファイル 772 // 773 // // 埋め込みファイル 774 // EmbedPatterns []string // //go:embed パターン 775 // EmbedFiles []string // EmbedPatternsにマッチしたファイル 776 // TestEmbedPatterns []string // TestGoFiles内の//go:embed パターン 777 // TestEmbedFiles []string // TestEmbedPatternsにマッチしたファイル 778 // XTestEmbedPatterns []string // XTestGoFiles内の//go:embed パターン 779 // XTestEmbedFiles []string // XTestEmbedPatternsにマッチしたファイル 780 // 781 // // Cgoのディレクティブ 782 // CgoCFLAGS []string // cgo: Cコンパイラのフラグ 783 // CgoCPPFLAGS []string // cgo: Cプリプロセッサのフラグ 784 // CgoCXXFLAGS []string // cgo: C++コンパイラのフラグ 785 // CgoFFLAGS []string // cgo: Fortranコンパイラのフラグ 786 // CgoLDFLAGS []string // cgo: リンカーのフラグ 787 // CgoPkgConfig []string // cgo: pkg-configの名前 788 // 789 // // 依存関係情報 790 // Imports []string // このパッケージが使用するインポートパス 791 // ImportMap map[string]string // ソースインポートからImportPathへのマップ(同一エントリーは省略) 792 // Deps []string // すべての(再帰的に)インポートされた依存関係 793 // TestImports []string // TestGoFilesからのインポート 794 // XTestImports []string // XTestGoFilesからのインポート 795 // 796 // // エラー情報 797 // Incomplete bool // このパッケージまたは依存関係にエラーがあります 798 // Error *PackageError // パッケージの読み込みエラー 799 // DepsErrors []*PackageError // 依存関係の読み込みエラー 800 // } 801 // 802 // ベンダーディレクトリに格納されたパッケージは、ベンダーディレクトリへのパスを含むImportPathを報告します 803 // (例えば、"p"の代わりに"d/vendor/p")。 804 // これにより、ImportPathはパッケージの特定のコピーを一意に識別します。 805 // Imports、Deps、TestImports、およびXTestImportsのリストもこれらの 806 // 拡張されたインポートパスを含みます。ベンダリングについての詳細は、golang.org/s/go15vendorを参照してください。 807 // 808 // エラー情報(存在する場合)は以下の通りです 809 // 810 // type PackageError struct { 811 // ImportStack []string // コマンドラインで指定されたパッケージからこのパッケージへの最短パス 812 // Pos string // エラーの位置(存在する場合、file:line:col) 813 // Err string // エラーそのもの 814 // } 815 // 816 // モジュール情報はModule構造体で、以下のlist -mの議論で定義されています。 817 // 818 // テンプレート関数 "join" は strings.Join を呼び出します。 819 // 820 // テンプレート関数 "context" はビルドコンテキストを返します。これは以下のように定義されています: 821 // 822 // type Context struct { 823 // GOARCH string // ターゲットアーキテクチャ 824 // GOOS string // ターゲットオペレーティングシステム 825 // GOROOT string // Goのルート 826 // GOPATH string // Goのパス 827 // CgoEnabled bool // cgoが使用可能かどうか 828 // UseAllFiles bool // //go:build行、ファイル名に関係なくファイルを使用する 829 // Compiler string // ターゲットパスを計算する際に想定するコンパイラ 830 // BuildTags []string // //go:build行でマッチさせるビルド制約 831 // ToolTags []string // ツールチェーン固有のビルド制約 832 // ReleaseTags []string // 現在のリリースと互換性のあるリリース 833 // InstallSuffix string // インストールディレクトリの名前に使用する接尾辞 834 // } 835 // 836 // これらのフィールドの意味についての詳細は、go/buildパッケージのContext型のドキュメンテーションを参照してください。 837 // 838 // -jsonフラグは、パッケージデータをテンプレート形式ではなくJSON形式で出力するように指示します 839 // JSONフラグは、出力する必要のあるフィールド名のセットをカンマ区切りでオプションで提供できます。 840 // その場合、それらの必要なフィールドは常にJSON出力に表示されますが、 841 // JSON構造体の計算における作業を節約するために他のフィールドは省略されるかもしれません。 842 // 843 // -compiledフラグは、listに対してCompiledGoFilesをコンパイラに提示されるGoソースファイルに設定するよう指示します。 844 // 通常、これはGoFilesにリストされたファイルを繰り返し、その後でCgoFilesとSwigFilesの処理によって生成されたGoコードも追加します。 845 // Importsリストは、GoFilesとCompiledGoFilesの両方からのすべてのインポートの統合を含みます。 846 // 847 // -depsフラグは、listに対して指定されたパッケージだけでなく、そのすべての依存関係も反復処理するよう指示します。 848 // これは深さ優先の後順走査でそれらを訪問し、その結果、パッケージはそのすべての依存関係の後にのみリストされます。 849 // コマンドラインで明示的にリストされていないパッケージは、DepOnlyフィールドがtrueに設定されます。 850 // 851 // -eフラグは、見つけることができないか形式が正しくないパッケージ、つまりエラーパッケージの処理を変更します。 852 // デフォルトでは、listコマンドは各エラーパッケージについて標準エラーにエラーを出力し、 853 // 通常の出力時にパッケージを考慮から省きます。 854 // -eフラグを使用すると、listコマンドは標準エラーにエラーを出力せず、 855 // 代わりに通常の出力でエラーパッケージを処理します。 856 // エラーパッケージは空でないImportPathとnilでないErrorフィールドを持ちます。 857 // 他の情報は欠落しているかもしれません(ゼロ化されているかもしれません)。 858 // 859 // -exportフラグは、listに対してExportフィールドを指定されたパッケージの最新のエクスポート情報を含む 860 // ファイルの名前に設定するよう指示します。 861 // また、BuildIDフィールドはコンパイルされたパッケージのビルドIDに設定されます。 862 // 863 // -findフラグは、listに対して指定されたパッケージを特定するが、 864 // その依存関係は解決しないように指示します:ImportsとDepsのリストは空になります。 865 // -findフラグを使用すると、-deps、-test、および-exportコマンドは使用できません。 866 // 867 // -testフラグを使用すると、listは指定されたパッケージだけでなく、 868 // テストがあるパッケージのテストバイナリも報告します。これにより、 869 // ソースコード分析ツールにテストバイナリがどのように構築されるかを正確に伝えます。 870 // テストバイナリの報告されるインポートパスは、パッケージのインポートパスに 871 // ".test"サフィックスが追加されたものです。例:"math/rand.test"。 872 // テストをビルドする際、特定のテストのために特定の依存関係を再ビルドする必要があることがあります 873 // (最も一般的にはテスト対象のパッケージ自体)。特定のテストバイナリのために再コンパイルされた 874 // パッケージの報告されるインポートパスは、スペースと括弧内のテストバイナリの名前に続きます。 875 // 例:"math/rand [math/rand.test]" または "regexp [sort.test]"。 876 // ForTestフィールドもテスト対象のパッケージの名前に設定されます 877 // (前述の例では "math/rand" または "sort")。 878 // 879 // Dir、Target、Shlib、Root、ConflictDir、およびExportのファイルパスは 880 // すべて絶対パスです。 881 // 882 // デフォルトでは、GoFiles、CgoFilesなどのリストはDir内のファイル名を保持します 883 // (つまり、Dirに対する相対パス、絶対パスではありません)。 884 // -compiledフラグと-testフラグを使用して追加された生成されたファイルは、 885 // 生成されたGoソースファイルのキャッシュされたコピーを参照する絶対パスです。 886 // これらはGoソースファイルであるにもかかわらず、パスは".go"で終わらないかもしれません。 887 // 888 // -mフラグを使用すると、listはパッケージではなくモジュールをリストします。 889 // 890 // モジュールをリストするとき、-fフラグはまだフォーマットテンプレートを指定しますが、 891 // 今度はModule構造体に適用されます: 892 // 893 // type Module struct { 894 // Path string // モジュールパス 895 // Query string // このバージョンに対応するバージョンクエリ 896 // Version string // モジュールバージョン 897 // Versions []string // 利用可能なモジュールバージョン 898 // Replace *Module // このモジュールによって置き換えられます 899 // Time *time.Time // バージョンが作成された時間 900 // Update *Module // 利用可能な更新(-uとともに) 901 // Main bool // これはメインモジュールですか? 902 // Indirect bool // モジュールはメインモジュールによって間接的にのみ必要とされます 903 // Dir string // ファイルのローカルコピーを保持するディレクトリ(あれば) 904 // GoMod string // モジュールを記述するgo.modファイルへのパス(あれば) 905 // GoVersion string // モジュールで使用されるgoのバージョン 906 // Retracted []string // 撤回情報(あれば)(-retractedまたは-uとともに) 907 // Deprecated string // 非推奨メッセージ(あれば)(-uとともに) 908 // Error *ModuleError // モジュールの読み込みエラー 909 // Sum string // パス、バージョンのチェックサム(go.sum内のように) 910 // GoModSum string // go.modのチェックサム(go.sum内のように) 911 // Origin any // モジュールの出所 912 // Reuse bool // 古いモジュール情報の再利用は安全です 913 // } 914 // 915 // type ModuleError struct { 916 // Err string // エラーそのもの 917 // } 918 // 919 // GoModファイルは、モジュールがモジュールキャッシュにある場合、 920 // または-modfileフラグが使用されている場合、モジュールディレクトリの外部にあるかもしれません。 921 // 922 // デフォルトの出力は、モジュールパスを印刷し、 923 // その後、バージョンと置換(あれば)についての情報を印刷することです。 924 // 例えば、'go list -m all'は次のように印刷するかもしれません: 925 // 926 // my/main/module 927 // golang.org/x/text v0.3.0 => /tmp/text 928 // rsc.io/pdf v0.1.1 929 // 930 // Module構造体には、この出力行をフォーマットするStringメソッドがあり、 931 // そのためデフォルトのフォーマットは-f '{{.String}}'と等価です。 932 // 933 // モジュールが置換されたとき、そのReplaceフィールドは 934 // 置換モジュールを説明し、そのDirフィールドは、存在する場合、 935 // 置換のソースコードに設定されます。(つまり、Replaceが非nilの場合、 936 // DirはReplace.Dirに設定され、置換されたソースコードにはアクセスできません。) 937 // 938 // -uフラグは利用可能なアップグレードに関する情報を追加します。 939 // 特定のモジュールの最新バージョンが現在のものより新しい場合、 940 // list -uはモジュールのUpdateフィールドを新しいモジュールに関する情報に設定します。 941 // list -uは、現在のバージョンが撤回されている場合、モジュールのRetractedフィールドも設定します。 942 // モジュールのStringメソッドは、現在のバージョンの後に新しいバージョンを括弧でフォーマットすることで 943 // 利用可能なアップグレードを示します。 944 // バージョンが撤回されている場合、文字列"(retracted)"がそれに続きます。 945 // 例えば、'go list -m -u all'は次のように印刷するかもしれません: 946 // 947 // my/main/module 948 // golang.org/x/text v0.3.0 [v0.4.0] => /tmp/text 949 // rsc.io/pdf v0.1.1 (retracted) [v0.1.2] 950 // 951 // (ツールの場合、'go list -m -u -json all'の方が解析しやすいかもしれません。) 952 // 953 // -versionsフラグを使用すると、listはModuleのVersionsフィールドを 954 // そのモジュールのすべての既知のバージョンのリストに設定します。これらは 955 // セマンティックバージョニングに従って、最初から最新の順に並べられます。このフラグはまた、 956 // デフォルトの出力形式を変更して、モジュールパスに続いてスペースで区切られたバージョンリストを表示します。 957 // 958 // -retractedフラグを使用すると、listは撤回されたモジュールバージョンに関する情報を報告します。 959 // -retractedが-fまたは-jsonと一緒に使用されると、Retractedフィールドは、 960 // バージョンがなぜ撤回されたかを説明する文字列に設定されます。 961 // この文字列は、モジュールのgo.modファイルのretractディレクティブのコメントから取得されます。 962 // -retractedが-versionsと一緒に使用されると、撤回されたバージョンと撤回されていないバージョンが一緒にリストされます。 963 // -retractedフラグは、-mの有無に関係なく使用できます。 964 // 965 // list -mへの引数は、パッケージではなくモジュールのリストとして解釈されます。 966 // メインモジュールは、現在のディレクトリを含むモジュールです。 967 // アクティブなモジュールは、メインモジュールとその依存関係です。 968 // 引数がない場合、list -mはメインモジュールを表示します。 969 // 引数がある場合、list -mは引数で指定されたモジュールを表示します。 970 // アクティブなモジュールは、そのモジュールパスで指定できます。 971 // 特別なパターン"all"は、すべてのアクティブなモジュールを指定します。最初にメインモジュール、 972 // その後モジュールパスでソートされた依存関係。 973 // "..."を含むパターンは、モジュールパスがパターンに一致するアクティブなモジュールを指定します。 974 // path@versionの形式のクエリは、そのクエリの結果を指定します。 975 // これはアクティブなモジュールに限定されません。 976 // モジュールクエリの詳細については、'go help modules'を参照してください。 977 // 978 // テンプレート関数 "module" は、モジュールパスまたはクエリである必要がある 979 // 単一の文字列引数を取り、指定されたモジュールをModule構造体として返します。 980 // エラーが発生した場合、結果は非nilのErrorフィールドを持つModule構造体になります。 981 // 982 // -mを使用しているとき、-reuse=old.jsonフラグは、以前の'go list -m -json'の実行結果を 983 // 含むファイルの名前を受け入れます。この実行は、同じセットの修飾フラグ(-u、-retracted、-versionsなど)を使用します。 984 // goコマンドは、このファイルを使用して、モジュールが前回の呼び出し以降に変更されていないことを判断し、 985 // それについての情報の再ダウンロードを避けることができます。 986 // 再ダウンロードされないモジュールは、新しい出力でReuseフィールドをtrueに設定することでマークされます。 987 // 通常、モジュールキャッシュはこの種の再利用を自動的に提供します。しかし、モジュールキャッシュを保持しないシステムでは、 988 // -reuseフラグが役立つことがあります。 989 // 990 // ビルドフラグについての詳細は、'go help build'を参照してください。 991 // 992 // パッケージの指定についての詳細は、'go help packages'を参照してください。 993 // 994 // モジュールについての詳細は、https://golang.org/ref/modを参照してください。 995 // 996 // # Module maintenance 997 // 998 // Go modはモジュールの操作へのアクセスを提供します。 999 // 1000 // モジュールのサポートは、'go mod'だけでなく、すべてのgoコマンドに組み込まれていることに注意してください。 1001 // 例えば、日々の依存関係の追加、削除、アップグレード、ダウングレードは、'go get'を使用して行うべきです。 1002 // モジュール機能の概要については、'go help modules'を参照してください。 1003 // 1004 // 使用法: 1005 // 1006 // go mod <command> [arguments] 1007 // 1008 // コマンドは次のとおりです: 1009 // 1010 // download モジュールをローカルキャッシュにダウンロード 1011 // edit ツールやスクリプトからgo.modを編集 1012 // graph モジュール要件グラフを印刷 1013 // init 現在のディレクトリに新しいモジュールを初期化 1014 // tidy 不足しているモジュールを追加し、使用されていないモジュールを削除 1015 // vendor 依存関係のベンダーコピーを作成 1016 // verify 依存関係が期待した内容を持っていることを確認 1017 // why パッケージやモジュールが必要な理由を説明 1018 // 1019 // コマンドの詳細については、"go help mod <command>"を使用してください。 1020 // 1021 // # Download modules to local cache 1022 // 1023 // 使用法: 1024 // 1025 // go mod download [-x] [-json] [-reuse=old.json] [modules] 1026 // 1027 // Downloadは指定されたモジュールをダウンロードします。これらは、メインモジュールの依存関係を選択するモジュールパターン 1028 // またはpath@version形式のモジュールクエリになることができます。 1029 // 1030 // 引数がない場合、downloadはメインモジュール内のパッケージをビルドおよびテストするために必要なモジュールに適用されます: 1031 // メインモジュールが'go 1.17'以上で明示的に必要とされるモジュール、または'go 1.16'以下であればすべての 1032 // トランジティブに必要なモジュール。 1033 // 1034 // goコマンドは、通常の実行中に必要に応じてモジュールを自動的にダウンロードします。 1035 // "go mod download"コマンドは、主にローカルキャッシュを事前に準備するため、 1036 // またはGoモジュールプロキシの答えを計算するために役立ちます。 1037 // 1038 // デフォルトでは、downloadは標準出力に何も書き込みません。進行状況のメッセージやエラーを標準エラーに出力することがあります。 1039 // 1040 // -jsonフラグを使用すると、downloadは標準出力にJSONオブジェクトのシーケンスを出力します。 1041 // これは、ダウンロードされた各モジュール(または失敗)を説明し、次のGo構造体に対応します: 1042 // 1043 // type Module struct { 1044 // Path string // モジュールパス 1045 // Query string // このバージョンに対応するバージョンクエリ 1046 // Version string // モジュールバージョン 1047 // Error string // モジュールの読み込みエラー 1048 // Info string // キャッシュされた.infoファイルへの絶対パス 1049 // GoMod string // キャッシュされた.modファイルへの絶対パス 1050 // Zip string // キャッシュされた.zipファイルへの絶対パス 1051 // Dir string // キャッシュされたソースルートディレクトリへの絶対パス 1052 // Sum string // パス、バージョンのチェックサム(go.sum内) 1053 // GoModSum string // go.modのチェックサム(go.sum内) 1054 // Origin any // モジュールの出所 1055 // Reuse bool // 古いモジュール情報の再利用は安全 1056 // } 1057 // 1058 // -reuseフラグは、以前の'go mod download -json'の実行結果を含むファイルの名前を受け入れます。 1059 // goコマンドは、このファイルを使用して、モジュールが前回の呼び出し以降に変更されていないことを判断し、 1060 // それについての情報の再ダウンロードを避けることができます。再ダウンロードされないモジュールは、 1061 // 新しい出力でReuseフィールドをtrueに設定することでマークされます。通常、モジュールキャッシュは 1062 // この種の再利用を自動的に提供します。しかし、モジュールキャッシュを保持しないシステムでは、 1063 // -reuseフラグが役立つことがあります。 1064 // 1065 // -xフラグを使用すると、downloadは実行するコマンドを出力します。 1066 // 1067 // 'go mod download'についての詳細は、https://golang.org/ref/mod#go-mod-download を参照してください。 1068 // 1069 // バージョンクエリについての詳細は、https://golang.org/ref/mod#version-queries を参照してください。 1070 // 1071 // # Edit go.mod from tools or scripts 1072 // 1073 // 使用法: 1074 // 1075 // go mod edit [編集フラグ] [-fmt|-print|-json] [go.mod] 1076 // 1077 // Editは、主にツールやスクリプトによる使用のためのgo.modの編集用コマンドラインインターフェースを提供します。 1078 // それはgo.modのみを読み取り、関与するモジュールについての情報を探しません。 1079 // デフォルトでは、editはメインモジュールのgo.modファイルを読み書きしますが、 1080 // 編集フラグの後に異なるターゲットファイルを指定することができます。 1081 // 1082 // 編集フラグは、編集操作のシーケンスを指定します。 1083 // 1084 // -fmtフラグは、他の変更を加えずにgo.modファイルを再フォーマットします。 1085 // この再フォーマットは、go.modファイルを使用または書き換える他の修正によっても暗示されます。 1086 // このフラグが必要な唯一の時間は、他のフラグが指定されていない場合、つまり 'go mod edit -fmt'のような場合です。 1087 // 1088 // -moduleフラグは、モジュールのパスを変更します(go.modファイルのモジュール行)。 1089 // 1090 // -require=path@versionと-droprequire=pathフラグは、 1091 // 指定されたモジュールパスとバージョンに対する要求を追加し、削除します。 1092 // -requireはpath上の既存の要求をすべて上書きすることに注意してください。 1093 // これらのフラグは主に、モジュールグラフを理解するツールのためのものです。 1094 // ユーザーは'go get path@version'または'go get path@none'を好むべきです。 1095 // これらは、他のモジュールによって課される制約を満たすために必要な他のgo.modの調整も行います。 1096 // 1097 // -exclude=path@versionと-dropexclude=path@versionフラグは、 1098 // 指定されたモジュールパスとバージョンに対する除外を追加し、削除します。 1099 // -exclude=path@versionは、その除外が既に存在する場合、何も操作を行いません。 1100 // 1101 // -replace=old[@v]=new[@v]フラグは、指定されたモジュールパスとバージョンのペアの置換を追加します。 1102 // old@vの@vが省略された場合、左側にバージョンがない置換が追加され、oldモジュールパスのすべてのバージョンに適用されます。 1103 // new@vの@vが省略された場合、新しいパスはモジュールパスではなく、ローカルのモジュールルートディレクトリであるべきです。 1104 // -replaceはold[@v]の冗長な置換をすべて上書きすることに注意してください。したがって、@vを省略すると、特定のバージョンの既存の置換が削除されます。 1105 // 1106 // -dropreplace=old[@v]フラグは、指定されたモジュールパスとバージョンのペアの置換を削除します。 1107 // @vが省略された場合、左側にバージョンがない置換が削除されます。 1108 // 1109 // -retract=versionと-dropretract=versionフラグは、指定されたバージョンに対する撤回を追加し、削除します。 1110 // バージョンは、"v1.2.3"のような単一のバージョンまたは"[v1.1.0,v1.1.9]"のような閉区間である可能性があります。 1111 // その撤回が既に存在する場合、-retract=versionは何も操作を行わないことに注意してください。 1112 // 1113 // -require、-droprequire、-exclude、-dropexclude、-replace、 1114 // -dropreplace、-retract、および -dropretractの編集フラグは繰り返すことができ、 1115 // 与えられた順序で変更が適用されます。 1116 // 1117 // -go=versionフラグは、期待されるGo言語のバージョンを設定します。 1118 // 1119 // -toolchain=nameフラグは、使用するGoツールチェーンを設定します。 1120 // 1121 // -printフラグは、最終的なgo.modをテキスト形式で印刷し、go.modに戻す代わりにそれを印刷します。 1122 // 1123 // -jsonフラグは、最終的なgo.modファイルをJSON形式で印刷し、go.modに戻す代わりにそれを印刷します。JSON出力は、これらのGo型に対応します: 1124 // 1125 // type Module struct { 1126 // Path string 1127 // Version string 1128 // } 1129 // 1130 // type GoMod struct { 1131 // Module ModPath 1132 // Go string 1133 // Toolchain string 1134 // Require []Require 1135 // Exclude []Module 1136 // Replace []Replace 1137 // Retract []Retract 1138 // } 1139 // 1140 // type ModPath struct { 1141 // Path string 1142 // Deprecated string 1143 // } 1144 // 1145 // type Require struct { 1146 // Path string 1147 // Version string 1148 // Indirect bool 1149 // } 1150 // 1151 // type Replace struct { 1152 // Old Module 1153 // New Module 1154 // } 1155 // 1156 // type Retract struct { 1157 // Low string 1158 // High string 1159 // Rationale string 1160 // } 1161 // 1162 // 単一のバージョンを表すRetractエントリ(間隔ではない)は、 1163 // "Low"と"High"のフィールドが同じ値に設定されます。 1164 // 1165 // Note that this only describes the go.mod file itself, not other modules 1166 // referred to indirectly. For the full set of modules available to a build, 1167 // use 'go list -m -json all'. 1168 // 1169 // Edit also provides the -C, -n, and -x build flags. 1170 // 1171 // See https://golang.org/ref/mod#go-mod-edit for more about 'go mod edit'. 1172 // 1173 // # Print module requirement graph 1174 // 1175 // 使用法: 1176 // 1177 // go mod graph [-go=version] [-x] 1178 // 1179 // Graphは、モジュール要求グラフ(置換が適用された状態)をテキスト形式で印刷します。 1180 // 出力の各行には、スペースで区切られた2つのフィールドがあります:モジュールとその要求の一つ。 1181 // 各モジュールは、path@versionの形式の文字列として識別されますが、メインモジュールは@version接尾辞がありません。 1182 // 1183 // -goフラグは、go.modファイルの'go'ディレクティブで示されるバージョンではなく、 1184 // 指定されたGoバージョンによってロードされたモジュールグラフを報告するようにgraphに指示します。 1185 // 1186 // -xフラグは、graphが実行するコマンドを印刷するようにgraphに指示します。 1187 // 1188 // 'go mod graph'についての詳細は、https://golang.org/ref/mod#go-mod-graph を参照してください。 1189 // 1190 // # Initialize new module in current directory 1191 // 1192 // 使用法: 1193 // 1194 // go mod init [module-path] 1195 // 1196 // Initは、新しいgo.modファイルを初期化し、現在のディレクトリに書き込むことで、 1197 // 現在のディレクトリをルートとする新しいモジュールを作成します。go.modファイルはすでに存在していてはなりません。 1198 // 1199 // Initは、新しいモジュールのモジュールパスを1つのオプション引数として受け入れます。もし 1200 // モジュールパス引数が省略された場合、initは.goファイルのインポートコメント、 1201 // ベンダーツールの設定ファイル(Gopkg.lockのような)、そして現在のディレクトリ(GOPATH内であれば)を 1202 // 使用してモジュールパスを推測しようとします。 1203 // 1204 // See https://golang.org/ref/mod#go-mod-init for more about 'go mod init'. 1205 // 1206 // # Add missing and remove unused modules 1207 // 1208 // 使用法: 1209 // 1210 // go mod tidy [-e] [-v] [-x] [-go=version] [-compat=version] 1211 // 1212 // Tidyは、go.modがモジュール内のソースコードと一致することを確認します。 1213 // 現在のモジュールのパッケージと依存関係をビルドするために必要なモジュールを追加し、 1214 // 関連するパッケージを提供しない使用されていないモジュールを削除します。また、 1215 // go.sumに不足しているエントリを追加し、不必要なものを削除します。 1216 // 1217 // -vフラグは、tidyが削除されたモジュールについての情報を標準エラーに印刷するようにします。 1218 // 1219 // -eフラグは、パッケージのロード中にエラーが発生した場合でも、tidyが処理を続行しようとするようにします。 1220 // 1221 // -goフラグは、tidyがgo.modファイル内の'go'ディレクティブを指定されたバージョンに更新するようにします。 1222 // これにより、go.modファイル内で明示的な要件として保持されるモジュール依存関係が変更される可能性があります。 1223 // (Goバージョン1.17以降は、遅延モジュールロードをサポートするためにより多くの要件を保持します。) 1224 // 1225 // -compatフラグは、指定されたメジャーGoリリースからの'go'コマンドがモジュールグラフを正常にロードするために 1226 // 必要な追加のチェックサムを保持し、そのバージョンの'go'コマンドが異なるモジュールバージョンからインポートされた 1227 // パッケージをロードすると、tidyがエラーを出すようにします。デフォルトでは、tidyは-compatフラグがgo.modファイル内の 1228 // 'go'ディレクティブによって示されるバージョンよりも前のバージョンに設定されているかのように動作します。 1229 // 1230 // -xフラグは、tidyがdownloadが実行するコマンドを印刷するようにします。 1231 // 1232 // 'go mod tidy'についての詳細は、https://golang.org/ref/mod#go-mod-tidy を参照してください。 1233 // 1234 // # Make vendored copy of dependencies 1235 // 1236 // 使用法: 1237 // 1238 // go mod vendor [-e] [-v] [-o outdir] 1239 // 1240 // Vendorは、メインモジュールのベンダーディレクトリをリセットして、 1241 // メインモジュールのすべてのパッケージをビルドおよびテストするために必要なすべてのパッケージを含めます。 1242 // ベンダー化されたパッケージのテストコードは含まれません。 1243 // 1244 // -vフラグは、ベンダーがベンダー化されたモジュールとパッケージの名前を標準エラーに印刷するようにします。 1245 // 1246 // -eフラグは、パッケージのロード中にエラーが発生した場合でも、ベンダーが処理を続行しようとするようにします。 1247 // 1248 // -oフラグは、ベンダーが指定されたパスにベンダーディレクトリを作成するようにします。 1249 // "vendor"ではない。goコマンドはモジュールのルートディレクトリ内の"vendor"という名前のベンダーディレクトリのみを使用できるため、 1250 // このフラグは主に他のツールに有用です。 1251 // 1252 // 'go mod vendor'についての詳細は、https://golang.org/ref/mod#go-mod-vendor を参照してください。 1253 // 1254 // # Verify dependencies have expected content 1255 // 1256 // 使用法: 1257 // 1258 // go mod verify 1259 // 1260 // Verifyは、現在のモジュールの依存関係が、ローカルのダウンロード済みソースキャッシュに保存されているものが、 1261 // ダウンロードされてから変更されていないことを確認します。すべてのモジュールが変更されていない場合、 1262 // verifyは"all modules verified."を印刷します。それ以外の場合、どのモジュールが変更されたかを報告し、 1263 // 'go mod'が非ゼロのステータスで終了する原因となります。 1264 // 1265 // 'go mod verify'についての詳細は、https://golang.org/ref/mod#go-mod-verify を参照してください。 1266 // 1267 // # Explain why packages or modules are needed 1268 // 1269 // 使用法: 1270 // 1271 // go mod why [-m] [-vendor] packages... 1272 // 1273 // Whyは、メインモジュールからリスト化された各パッケージへのインポートグラフの最短パスを表示します。 1274 // -mフラグが指定されている場合、whyは引数をモジュールのリストとして扱い、各モジュール内の任意のパッケージへのパスを見つけます。 1275 // 1276 // デフォルトでは、whyは"go list all"によってマッチしたパッケージのグラフを問い合わせます。 1277 // これには、到達可能なパッケージのテストが含まれます。-vendorフラグを指定すると、whyは依存関係のテストを除外します。 1278 // 1279 // 出力は、コマンドライン上の各パッケージまたはモジュール名に対して、空行で区切られたスタンザのシーケンスです。 1280 // 各スタンザは、ターゲットパッケージまたはモジュールを示す"# package"または"# module"のコメント行で始まります。 1281 // 続く行は、インポートグラフを通じたパスを1行に1つのパッケージで示します。パッケージまたはモジュールがメインモジュールから参照されていない場合、 1282 // スタンザはその事実を示す単一の括弧付きノートを表示します。 1283 // 1284 // 例えば: 1285 // 1286 // $ go mod why golang.org/x/text/language golang.org/x/text/encoding 1287 // # golang.org/x/text/language 1288 // rsc.io/quote 1289 // rsc.io/sampler 1290 // golang.org/x/text/language 1291 // 1292 // # golang.org/x/text/encoding 1293 // (main module does not need package golang.org/x/text/encoding) 1294 // $ 1295 // 1296 // 'go mod why'についての詳細は、https://golang.org/ref/mod#go-mod-why を参照してください。 1297 // 1298 // # Workspace maintenance 1299 // 1300 // Workは、ワークスペースの操作へのアクセスを提供します。 1301 // 1302 // ワークスペースのサポートは、'go work'だけでなく、他の多くのコマンドに組み込まれていることに注意してください。 1303 // 1304 // Goのモジュールシステムについての情報は、'go help modules'を参照してください。ワークスペースはその一部です。 1305 // 1306 // ワークスペースについての詳細なリファレンスは、https://go.dev/ref/mod#workspaces を参照してください。 1307 // 1308 // ワークスペースについての入門チュートリアルは、https://go.dev/doc/tutorial/workspaces を参照してください。 1309 // 1310 // ワークスペースは、"use"ディレクティブで一連のモジュールディレクトリを指定するgo.workファイルによって指定されます。 1311 // これらのモジュールは、ビルドや関連操作のためのルートモジュールとしてgoコマンドによって使用されます。 1312 // 使用するモジュールを指定しないワークスペースは、ローカルモジュールからのビルドを行うためには使用できません。 1313 // 1314 // go.workファイルは行指向です。各行は単一のディレクティブを保持し、 1315 // キーワードに続く引数で構成されます。例えば: 1316 // 1317 // go 1.18 1318 // 1319 // use ../foo/bar 1320 // use ./baz 1321 // 1322 // replace example.com/foo v1.2.3 => example.com/bar v1.4.5 1323 // 1324 // 先頭のキーワードは、Goのインポートのように、隣接する行からブロックを作成するために要素化できます。 1325 // 1326 // use ( 1327 // ../foo/bar 1328 // ./baz 1329 // ) 1330 // 1331 // useディレクティブは、ワークスペースのメインモジュールのセットに含めるモジュールを指定します。 1332 // useディレクティブの引数は、モジュールのgo.modファイルが含まれるディレクトリです。 1333 // 1334 // goディレクティブは、ファイルが書かれたGoのバージョンを指定します。将来的にワークスペースのセマンティクスに 1335 // 変更がある可能性があり、このバージョンによって制御されるかもしれませんが、現時点では指定されたバージョンは 1336 // 効果がありません。 1337 // 1338 // replaceディレクティブは、go.modファイル内のreplaceディレクティブと同じ構文を持ち、go.modファイル内のreplaceよりも 1339 // 優先されます。これは主に、異なるワークスペースモジュール内の競合するreplaceを上書きするために意図されています。 1340 // 1341 // goコマンドがワークスペースモードで動作しているかどうかを判断するには、"go env GOWORK"コマンドを使用します。 1342 // これにより、使用されているワークスペースファイルが指定されます。 1343 // 1344 // 使用法: 1345 // 1346 // go work <コマンド> [引数] 1347 // 1348 // コマンドは以下の通りです: 1349 // 1350 // edit ツールやスクリプトからgo.workを編集 1351 // init ワークスペースファイルを初期化 1352 // sync ワークスペースのビルドリストをモジュールに同期 1353 // use ワークスペースファイルにモジュールを追加 1354 // vendor make vendored copy of dependencies 1355 // 1356 // コマンドについての詳細な情報は "go help work <コマンド>" を使用してください。 1357 // 1358 // # Edit go.work from tools or scripts 1359 // 1360 // 使用法: 1361 // 1362 // go work edit [編集フラグ] [go.work] 1363 // 1364 // Editは、主にツールやスクリプトによる使用を目的とした、go.workの編集用のコマンドラインインターフェースを提供します。 1365 // それはgo.workのみを読み取り、関与するモジュールについての情報を検索しません。 1366 // ファイルが指定されていない場合、Editは現在のディレクトリとその親ディレクトリでgo.workファイルを探します。 1367 // 1368 // 編集フラグは一連の編集操作を指定します。 1369 // 1370 // -fmtフラグは、他の変更を行わずにgo.workファイルを再フォーマットします。 1371 // この再フォーマットは、go.modファイルの使用や書き換えを伴う他の修正にも含まれます。 1372 // このフラグが必要な唯一の時期は、他のフラグが指定されていない場合、つまり 'go work edit -fmt' のような場合です。 1373 // 1374 // -use=pathおよび-dropuse=pathフラグは、 1375 // go.workファイルのモジュールディレクトリのセットにuseディレクティブを追加および削除します。 1376 // 1377 // -replace=old[@v]=new[@v]フラグは、指定された 1378 // モジュールパスとバージョンのペアの置換を追加します。old@vの@vが省略された場合、 1379 // 左側にバージョンがない置換が追加され、oldモジュールパスのすべてのバージョンに適用されます。 1380 // new@vの@vが省略された場合、新しいパスはモジュール 1381 // パスではなく、ローカルのモジュールルートディレクトリであるべきです。 1382 // -replaceはold[@v]の冗長な置換を上書きすることに注意してください。 1383 // したがって、@vを省略すると、特定のバージョンの既存の置換が削除されます。 1384 // 1385 // -dropreplace=old[@v]フラグは、指定された 1386 // モジュールパスとバージョンのペアの置換を削除します。@vが省略された場合、 1387 // 左側にバージョンがない置換が削除されます。 1388 // 1389 // -use、-dropuse、-replace、および -dropreplaceの編集フラグは、 1390 // 繰り返すことができ、与えられた順序で変更が適用されます。 1391 // 1392 // -go=versionフラグは、期待されるGo言語のバージョンを設定します。 1393 // 1394 // -toolchain=nameフラグは、使用するGoツールチェーンを設定します。 1395 // 1396 // -printフラグは、最終的なgo.workをテキスト形式で印刷し、 1397 // go.modに書き戻す代わりに表示します。 1398 // 1399 // -jsonフラグは、最終的なgo.workファイルをJSON形式で印刷し、 1400 // go.modに書き戻す代わりに表示します。JSON出力は以下のGo型に対応します: 1401 // 1402 // type GoWork struct { 1403 // Go string 1404 // Toolchain string 1405 // Use []Use 1406 // Replace []Replace 1407 // } 1408 // 1409 // type Use struct { 1410 // DiskPath string 1411 // ModulePath string 1412 // } 1413 // 1414 // type Replace struct { 1415 // Old Module 1416 // New Module 1417 // } 1418 // 1419 // type Module struct { 1420 // Path string 1421 // Version string 1422 // } 1423 // 1424 // 詳細情報については、https://go.dev/ref/mod#workspaces のワークスペースリファレンスを参照してください。 1425 // 1426 // # Initialize workspace file 1427 // 1428 // 使用法: 1429 // 1430 // go work init [moddirs] 1431 // 1432 // Initは、新しいgo.workファイルを現在のディレクトリに初期化し、書き込むことで、 1433 // 現在のディレクトリに新しいワークスペースを作成します。 1434 // 1435 // go work initは、ワークスペースモジュールへのパスを引数としてオプションで受け入れます。 1436 // 引数が省略された場合、モジュールがない空のワークスペースが作成されます。 1437 // 1438 // 各引数パスは、go.workファイルのuseディレクティブに追加されます。 1439 // 現在のgoバージョンもgo.workファイルに記載されます。 1440 // 1441 // 詳細情報については、https://go.dev/ref/mod#workspaces のワークスペースリファレンスを参照してください。 1442 // 1443 // # Sync workspace build list to modules 1444 // 1445 // 使用法: 1446 // 1447 // go work sync 1448 // 1449 // Syncは、ワークスペースのビルドリストをワークスペースのモジュールに同期します。 1450 // 1451 // ワークスペースのビルドリストは、ワークスペース内でビルドを行うために使用されるすべての 1452 // (トランジティブな)依存モジュールのバージョンのセットです。go work syncは、 1453 // 最小バージョン選択アルゴリズムを使用してそのビルドリストを生成し、 1454 // そのバージョンをワークスペース内で指定された各モジュールに同期します(useディレクティブで)。 1455 // 1456 // 同期は、ワークスペースモジュールで指定された各依存モジュールを、 1457 // 依存モジュールのバージョンがすでにビルドリストのバージョンと同じでない場合、 1458 // ビルドリストのバージョンに順次アップグレードすることによって行われます。 1459 // 最小バージョン選択が、各モジュールのビルドリストのバージョンが常に各ワークスペースモジュールの 1460 // バージョンと同じかそれ以上であることを保証することに注意してください。 1461 // 1462 // 詳細情報については、https://go.dev/ref/mod#workspaces のワークスペースリファレンスを参照してください。 1463 // 1464 // # Add modules to workspace file 1465 // 1466 // 使用法: 1467 // 1468 // go work use [-r] [moddirs] 1469 // 1470 // Useは、ディレクトリをオプションで再帰的にgo.workファイルに追加するための 1471 // コマンドラインインターフェースを提供します。 1472 // 1473 // コマンドライン上の各引数ディレクトリに対してuseディレクティブがgo.workファイルに追加されます。 1474 // それが存在する場合はgo.workファイルに、存在しない場合はgo.workファイルから削除されます。 1475 // 残りのuseディレクティブが存在しないモジュールを参照している場合、Useは失敗します。 1476 // 1477 // Useは、go.workのgo行を更新して、使用されるモジュールのすべてのgo行と同じか 1478 // それ以上のバージョンを指定します。これは、既存のものと新しく追加されたものの両方です。 1479 // 引数がない場合、この更新はgo work useが行う唯一のことです。 1480 // 1481 // -rフラグは、引数ディレクトリでモジュールを再帰的に検索し、 1482 // useコマンドは、それぞれのディレクトリが引数として指定されたかのように動作します: 1483 // つまり、存在するディレクトリにはuseディレクティブが追加され、存在しないディレクトリには削除されます。 1484 // 1485 // 詳細情報については、https://go.dev/ref/mod#workspaces のワークスペースリファレンスを参照してください。 1486 // 1487 // # Make vendored copy of dependencies 1488 // 1489 // 使用法: 1490 // 1491 // go work vendor [-e] [-v] [-o outdir] 1492 // 1493 // Vendorは、ワークスペースのすべてのパッケージをビルドし、テストするために必要なすべてのパッケージを含むように 1494 // ワークスペースのベンダーディレクトリをリセットします。 1495 // ベンダードパッケージのテストコードは含まれません。 1496 // 1497 // -vフラグは、ベンダードモジュールとパッケージの名前を標準エラーに出力するようにvendorに指示します。 1498 // 1499 // -eフラグは、パッケージのロード中にエラーが発生した場合でもvendorが処理を続行しようとするようにします。 1500 // 1501 // -oフラグは、vendorが"vendor"ではなく指定されたパスにベンダーディレクトリを作成するようにします。 1502 // goコマンドはモジュールのルートディレクトリ内の"vendor"という名前のベンダーディレクトリしか使用できないため、 1503 // このフラグは主に他のツールにとって有用です。 1504 // 1505 // # Compile and run Go program 1506 // 1507 // 使用法: 1508 // 1509 // go run [build flags] [-exec xprog] package [arguments...] 1510 // 1511 // Runは、指定されたmain Goパッケージをコンパイルして実行します。 1512 // 通常、パッケージは単一のディレクトリからの.goソースファイルのリストとして指定されますが、 1513 // インポートパス、ファイルシステムパス、または 'go run .' や 'go run my/cmd' のように 1514 // 単一の既知のパッケージに一致するパターンでもかまいません。 1515 // 1516 // パッケージ引数にバージョン接尾辞(@latestや@v1.0.0のような)がある場合、 1517 // "go run"はモジュール対応モードでプログラムをビルドし、現在のディレクトリや 1518 // ある場合は親ディレクトリのgo.modファイルを無視します。これは、メインモジュールの 1519 // 依存関係に影響を与えずにプログラムを実行するのに便利です。 1520 // 1521 // パッケージ引数にバージョン接尾辞がない場合、"go run"はGO111MODULE環境変数と 1522 // go.modファイルの存在に応じて、モジュール対応モードまたはGOPATHモードで実行されるかもしれません。 1523 // 詳細は 'go help modules' を参照してください。モジュール対応モードが有効になっている場合、 1524 // "go run"はメインモジュールのコンテキストで実行されます。 1525 // 1526 // デフォルトでは、'go run'はコンパイルされたバイナリを直接実行します:'a.out arguments...'. 1527 // -execフラグが指定されている場合、'go run'はxprogを使用してバイナリを起動します: 1528 // 1529 // 'xprog a.out arguments...'. 1530 // 1531 // -execフラグが指定されていない場合、GOOSまたはGOARCHがシステムのデフォルトと異なり、 1532 // そしてプログラム名がgo_$GOOS_$GOARCH_execで見つかる場合、 1533 // 'go run'はそのプログラムを使用してバイナリを起動します。 1534 // 例えば 'go_js_wasm_exec a.out arguments...'. これにより、シミュレーターや他の実行方法が 1535 // 利用可能な場合にクロスコンパイルされたプログラムを実行できます。 1536 // 1537 // デフォルトでは、'go run'はビルド時間を短縮するためにデバッガーが使用する情報を生成せずに 1538 // バイナリをコンパイルします。バイナリにデバッガー情報を含めるには、'go build'を使用します。 1539 // 1540 // Runの終了ステータスは、コンパイルされたバイナリの終了ステータスではありません。 1541 // 1542 // ビルドフラグについての詳細は、'go help build'を参照してください。 1543 // パッケージの指定についての詳細は、'go help packages'を参照してください。 1544 // 1545 // 参照:go build. 1546 // 1547 // # Test packages 1548 // 1549 // 使用法: 1550 // 1551 // go test [ビルド/テストフラグ] [パッケージ] [ビルド/テストフラグ & テストバイナリフラグ] 1552 // 1553 // 'Go test'は、インポートパスで指定されたパッケージのテストを自動化します。 1554 // テスト結果の概要を以下の形式で出力します: 1555 // 1556 // ok archive/tar 0.011s 1557 // FAIL archive/zip 0.022s 1558 // ok compress/gzip 0.033s 1559 // ... 1560 // 1561 // その後、失敗したパッケージごとの詳細な出力が続きます。 1562 // 1563 // 'Go test'は、ファイルパターン "*_test.go" に一致する名前のファイルと共に各パッケージを再コンパイルします。 1564 // これらの追加ファイルには、テスト関数、ベンチマーク関数、ファズテスト、例示関数が含まれることがあります。 1565 // 詳細は 'go help testfunc' を参照してください。 1566 // リストされた各パッケージは、別々のテストバイナリの実行を引き起こします。 1567 // 名前が "_"("_test.go" を含む)または "." で始まるファイルは無視されます。 1568 // 1569 // "_test"という接尾辞でパッケージを宣言するテストファイルは、 1570 // 別のパッケージとしてコンパイルされ、その後、メインのテストバイナリとリンクして実行されます。 1571 // 1572 // goツールは "testdata"という名前のディレクトリを無視し、 1573 // テストに必要な補助的なデータを保持するために利用可能にします。 1574 // 1575 // テストバイナリをビルドする一部として、go testはgo vetをパッケージと 1576 // そのテストソースファイルに対して実行し、重大な問題を特定します。もしgo vetが 1577 // 何か問題を見つけた場合、go testはそれらを報告し、テストバイナリを実行しません。 1578 // 使われるのは、デフォルトのgo vetチェックの高信頼度のサブセットだけです。 1579 // そのサブセットは次の通りです:atomic, bool, buildtags, directive, errorsas, 1580 // ifaceassert, nilfunc, printf, そして stringintconv。これらと他のvetテストの 1581 // ドキュメンテーションは "go doc cmd/vet"を通じて見ることができます。 1582 // go vetの実行を無効にするには、-vet=offフラグを使用します。すべての 1583 // チェックを実行するには、-vet=allフラグを使用します。 1584 // 1585 // すべてのテスト出力とサマリーラインは、テストが自身の標準エラーにそれらを出力したとしても、 1586 // goコマンドの標準出力に印刷されます。(goコマンドの標準エラーは、テストのビルドエラーを印刷するために予約されています。) 1587 // 1588 // goコマンドは、テストの環境で$PATHの先頭に$GOROOT/binを配置します。 1589 // これにより、'go'コマンドを実行するテストは、親の'go test'コマンドと同じ'go'を使用します。 1590 // 1591 // Goテストは2つの異なるモードで実行されます: 1592 // 1593 // 最初のモードは、ローカルディレクトリモードと呼ばれ、go testがパッケージ引数なしで 1594 // 呼び出されたときに発生します(例えば、'go test'または'go test -v')。このモードでは、 1595 // go testは現在のディレクトリにあるパッケージソースとテストをコンパイルし、 1596 // 結果として得られたテストバイナリを実行します。このモードでは、キャッシング(以下で説明)は無効化されます。 1597 // パッケージテストが終了した後、go testはテストステータス('ok'または'FAIL')、パッケージ名、 1598 // 経過時間を示すサマリーラインを印刷します。 1599 // 1600 // 二つ目は、パッケージリストモードと呼ばれ、go testが明示的なパッケージ引数と共に呼び出されたときに発生します 1601 // (例えば 'go test math', 'go test ./...', そして 'go test .')。このモードでは、go testは 1602 // コマンドラインにリストされた各パッケージをコンパイルし、テストします。パッケージテストが通過すると、 1603 // go testは最終的な 'ok' サマリーラインのみを印刷します。パッケージテストが失敗すると、go testは 1604 // フルのテスト出力を印刷します。-benchフラグまたは-vフラグと共に呼び出されると、go testは 1605 // パッケージテストが通過してもフルの出力を印刷します。これは、要求されたベンチマーク結果や 1606 // 詳細なログを表示するためです。リストされたすべてのパッケージのパッケージテストが終了し、 1607 // その出力が印刷された後、go testはパッケージテストがいずれかで失敗した場合に最終的な 'FAIL' ステータスを印刷します。 1608 // 1609 // パッケージリストモードのみで、go testは成功したパッケージテストの結果をキャッシュして、 1610 // テストの不必要な繰り返し実行を避けます。テストの結果がキャッシュから回復できるとき、 1611 // go testはテストバイナリを再度実行する代わりに前回の出力を再表示します。これが発生すると、 1612 // go testはサマリーラインの経過時間の代わりに '(cached)' を印刷します。 1613 // 1614 // キャッシュ内の一致のルールは、同じテストバイナリが実行され、コマンドライン上のフラグがすべて 1615 // 'キャッシュ可能'なテストフラグの制限されたセットから来るというものです。これには、-benchtime、-cpu、 1616 // -list、-parallel、-run、-short、-timeout、-failfast、-fullpath、-vが含まれます。 1617 // go testの実行がこのセット外の任意のテストフラグまたは非テストフラグを持つ場合、 1618 // 結果はキャッシュされません。テストキャッシュを無効にするには、キャッシュ可能なフラグ以外の 1619 // 任意のテストフラグまたは引数を使用します。テストキャッシュを明示的に無効にする慣用的な方法は 1620 // -count=1を使用することです。パッケージのソースルート内(通常は$GOPATH)でファイルを開くテストや、 1621 // 環境変数を参照するテストは、ファイルと環境変数が変更されない未来の実行とのみ一致します。 1622 // キャッシュされたテスト結果はまったく時間がかからないとして扱われるため、成功したパッケージテスト結果は 1623 // -timeout設定に関係なくキャッシュされ、再利用されます。 1624 // 1625 // ビルドフラグに加えて、'go test'自体が処理するフラグは以下の通りです: 1626 // 1627 // -args 1628 // コマンドラインの残りの部分(-argsの後のすべて)を、解釈せずに変更せずにテストバイナリに渡します。 1629 // このフラグはコマンドラインの残りの部分を消費するため、パッケージリスト(存在する場合)はこのフラグの前に表示される必要があります。 1630 // 1631 // -c 1632 // テストバイナリを現在のディレクトリのpkg.testにコンパイルしますが、実行はしません 1633 // (ここで、pkgはパッケージのインポートパスの最後の要素です)。 1634 // ファイル名またはターゲットディレクトリは-oフラグで変更できます。 1635 // 1636 // -exec xprog 1637 // xprogを使用してテストバイナリを実行します。振る舞いは 1638 // 'go run'と同じです。詳細は'go help run'を参照してください。 1639 // 1640 // -json 1641 // テスト出力を自動処理に適したJSONに変換します。 1642 // エンコーディングの詳細については'go doc test2json'を参照してください。 1643 // 1644 // -o file 1645 // テストバイナリを指定したファイルにコンパイルします。 1646 // テストはまだ実行されます(-cまたは-iが指定されていない限り)。 1647 // もしファイルがスラッシュで終わっているか、既存のディレクトリを指定している場合、 1648 // テストはそのディレクトリのpkg.testに書き込まれます。 1649 // 1650 // テストバイナリは、テストの実行を制御するフラグも受け入れます。これらの 1651 // フラグは'go test'でもアクセス可能です。詳細は'go help testflag'を参照してください。 1652 // 1653 // ビルドフラグについての詳細は、'go help build'を参照してください。 1654 // パッケージの指定についての詳細は、'go help packages'を参照してください。 1655 // 1656 // 参照:go build, go vet. 1657 // 1658 // # Run specified go tool 1659 // 1660 // 使用法: 1661 // 1662 // go tool [-n] command [args...] 1663 // 1664 // Toolは、引数で識別されるgoツールコマンドを実行します。 1665 // 引数がない場合、既知のツールのリストを表示します。 1666 // 1667 // -nフラグは、toolに実行されるコマンドを表示させるが実行はさせないようにします。 1668 // 1669 // 各ツールコマンドの詳細については、'go doc cmd/<command>'を参照してください。 1670 // 1671 // # Print Go version 1672 // 1673 // 使用法: 1674 // 1675 // go version [-m] [-v] [file ...] 1676 // 1677 // Versionは、Goバイナリファイルのビルド情報を表示します。 1678 // 1679 // Go versionは、指定された各ファイルをビルドするために使用されたGoのバージョンを報告します。 1680 // 1681 // コマンドライン上でファイルが指定されていない場合、go versionは自身の 1682 // バージョン情報を表示します。 1683 // 1684 // ディレクトリが指定されている場合、go versionはそのディレクトリを再帰的に走査し、 1685 // 認識されたGoのバイナリを探し、そのバージョンを報告します。 1686 // デフォルトでは、go versionはディレクトリスキャン中に見つかった認識されないファイルを報告しません。 1687 // -vフラグを使用すると、認識されないファイルを報告します。 1688 // 1689 // -mフラグを使用すると、go versionは各ファイルの埋め込まれた 1690 // モジュールバージョン情報を表示します(利用可能な場合)。出力では、モジュール 1691 // 情報はバージョンラインに続く複数の行で構成され、各行は先頭のタブ文字でインデントされます。 1692 // 1693 // 参照:go doc runtime/debug.BuildInfo. 1694 // 1695 // # Report likely mistakes in packages 1696 // 1697 // 使用法: 1698 // 1699 // go vet [ビルドフラグ] [-vettool prog] [vetフラグ] [パッケージ] 1700 // 1701 // Vetは、インポートパスで指定されたパッケージに対してGo vetコマンドを実行します。 1702 // 1703 // vetとそのフラグについての詳細は、'go doc cmd/vet'を参照してください。 1704 // パッケージの指定についての詳細は、'go help packages'を参照してください。 1705 // チェッカーとそのフラグのリストについては、'go tool vet help'を参照してください。 1706 // 'printf'のような特定のチェッカーの詳細については、'go tool vet help printf'を参照してください。 1707 // 1708 // -vettool=progフラグは、代替または追加のチェックを持つ別の分析ツールを選択します。 1709 // 例えば、'shadow'アナライザは、これらのコマンドを使用してビルドおよび実行できます: 1710 // 1711 // go install golang.org/x/tools/go/analysis/passes/shadow/cmd/shadow@latest 1712 // go vet -vettool=$(which shadow) 1713 // 1714 // go vetがサポートするビルドフラグは、パッケージの解決と実行を制御するものです。 1715 // 例えば、-C, -n, -x, -v, -tags, そして -toolexecです。 1716 // これらのフラグについての詳細は、'go help build'を参照してください。 1717 // 1718 // 参照:go fmt, go fix. 1719 // 1720 // # Build constraints 1721 // 1722 // ビルド制約、またはビルドタグとは、ファイルがパッケージに含まれるべき条件です。 1723 // ビルド制約は次のように始まる行コメントで与えられます: 1724 // 1725 // //go:build 1726 // 1727 // 制約は任意の種類のソースファイル(Goだけでなく)に現れることができますが、 1728 // ファイルの先頭近く、空行や他のコメントだけが先行する位置に現れなければなりません。 1729 // これらのルールは、Goファイルではビルド制約がパッケージ句の前に現れなければならないことを意味します。 1730 // 1731 // ビルド制約とパッケージのドキュメンテーションを区別するために、 1732 // ビルド制約の後には空行を入れるべきです。 1733 // 1734 // ビルド制約コメントは、||、&&、および!演算子および括弧によって組み合わされた 1735 // ビルドタグを含む式として評価されます。演算子はGoと同じ意味を持ちます。 1736 // 1737 // 例えば、次のビルド制約は、"linux"と"386"の制約が満たされているとき、または 1738 // "darwin"が満たされていて"cgo"が満たされていないときに、ファイルをビルドするように制約します: 1739 // 1740 // //go:build (linux && 386) || (darwin && !cgo) 1741 // 1742 // ファイルに複数の//go:build行がある場合はエラーです。 1743 // 1744 // 特定のビルド中に、以下のビルドタグが満たされます: 1745 // 1746 // - ターゲットとなるオペレーティングシステム、runtime.GOOSによって表現され、 1747 // GOOS環境変数で設定されます。 1748 // - ターゲットとなるアーキテクチャ、runtime.GOARCHによって表現され、 1749 // GOARCH環境変数で設定されます。 1750 // - 任意のアーキテクチャ機能、GOARCH.featureの形式で 1751 // (例えば、"amd64.v2")、詳細は以下を参照してください。 1752 // - "unix"、もしGOOSがUnixまたはUnix風のシステムである場合。 1753 // - 使用されているコンパイラ、"gc"または"gccgo" 1754 // - "cgo"、もしcgoコマンドがサポートされている場合('go help environment'のCGO_ENABLEDを参照)。 1755 // - 各Goメジャーリリースに対する用語、現在のバージョンまで: 1756 // Goバージョン1.1以降は"go1.1"、Go 1.12からは"go1.12"、など。 1757 // - -tagsフラグによって与えられた任意の追加タグ('go help build'を参照)。 1758 // 1759 // ベータ版やマイナーリリースに対する別のビルドタグはありません。 1760 // 1761 // ファイル名が、拡張子と可能な_test接尾辞を削除した後、以下のパターンのいずれかと一致する場合: 1762 // 1763 // *_GOOS 1764 // *_GOARCH 1765 // *_GOOS_GOARCH 1766 // 1767 // (例:source_windows_amd64.go) ここで、GOOSとGOARCHはそれぞれ任意の既知のオペレーティングシステムと 1768 // アーキテクチャの値を表します。その場合、ファイルはそれらの項目を必要とする暗黙のビルド制約を持つと 1769 // 考えられます(ファイル内の明示的な制約に加えて)。 1770 // 1771 // GOOS=androidを使用すると、androidのタグとファイルに加えて、GOOS=linuxのビルドタグとファイルに一致します。 1772 // 1773 // GOOS=illumosを使用すると、illumosのタグとファイルに加えて、GOOS=solarisのビルドタグとファイルに一致します。 1774 // 1775 // GOOS=iosを使用すると、iosのタグとファイルに加えて、GOOS=darwinのビルドタグとファイルに一致します。 1776 // 1777 // 定義されたアーキテクチャ機能のビルドタグは以下の通りです: 1778 // 1779 // - GOARCH=386の場合、GO386=387とGO386=sse2は 1780 // それぞれ386.387と386.sse2のビルドタグを設定します。 1781 // - GOARCH=amd64の場合、GOAMD64=v1、v2、v3は 1782 // amd64.v1、amd64.v2、amd64.v3の機能ビルドタグに対応します。 1783 // - GOARCH=armの場合、GOARM=5、6、7は 1784 // arm.5、arm.6、arm.7の機能ビルドタグに対応します。 1785 // - GOARCH=arm64の場合、GOARM64=v8.{0-9}とv9.{0-5}は 1786 // arm64.v8.{0-9}とarm64.v9.{0-5}の機能ビルドタグに対応します。 1787 // - GOARCH=mipsまたはmipsleの場合、 1788 // GOMIPS=hardfloatとsoftfloatは 1789 // mips.hardfloatとmips.softfloat 1790 // (またはmipsle.hardfloatとmipsle.softfloat)の機能ビルドタグに対応します。 1791 // - GOARCH=mips64またはmips64leの場合、 1792 // GOMIPS64=hardfloatとsoftfloatは 1793 // mips64.hardfloatとmips64.softfloat 1794 // (またはmips64le.hardfloatとmips64le.softfloat)の機能ビルドタグに対応します。 1795 // - GOARCH=ppc64またはppc64leの場合、 1796 // GOPPC64=power8、power9、power10は 1797 // ppc64.power8、ppc64.power9、ppc64.power10 1798 // (またはppc64le.power8、ppc64le.power9、ppc64le.power10) 1799 // の機能ビルドタグに対応します。 1800 // - GOARCH=riscv64の場合、 1801 // GORISCV64=rva20u64とrva22u64はriscv64.rva20u64 1802 // とriscv64.rva22u64のビルドタグに対応します。 1803 // - GOARCH=wasmの場合、GOWASM=satconvとsignextは 1804 // wasm.satconvとwasm.signextの機能ビルドタグに対応します。 1805 // 1806 // GOARCH=amd64、arm、ppc64、ppc64le、riscv64の場合、特定の機能レベルは 1807 // すべての前のレベルの機能ビルドタグも設定します。 1808 // 例えば、GOAMD64=v2はamd64.v1とamd64.v2の機能フラグを設定します。 1809 // これにより、v2の機能を使用するコードは、たとえば、GOAMD64=v4が導入されたときでも 1810 // コンパイルを続けることが保証されます。 1811 // 特定の機能レベルの欠如を処理するコードは、否定を使用するべきです: 1812 // 1813 // //go:build !amd64.v2 1814 // 1815 // ファイルがどのビルドでも考慮されないようにするには: 1816 // 1817 // //go:build ignore 1818 // 1819 // (他の満たされない単語でも機能しますが、"ignore"が慣習的です。) 1820 // 1821 // ファイルをcgoを使用してのみビルドし、LinuxとOS Xでのみビルドするには: 1822 // 1823 // //go:build cgo && (linux || darwin) 1824 // 1825 // そのようなファイルは通常、他のシステムのデフォルトの機能を実装する 1826 // 別のファイルとペアになり、この場合、制約を持つことになります: 1827 // 1828 // //go:build !(cgo && (linux || darwin)) 1829 // 1830 // ファイル名をdns_windows.goとすると、Windows用のパッケージをビルドするときにのみ 1831 // 含まれます。同様に、math_386.sは32ビットx86のパッケージをビルドするときにのみ含まれます。 1832 // 1833 // Goのバージョン1.16以前では、ビルド制約には異なる構文が使用されていました。 1834 // それは"// +build"プレフィックスでした。gofmtコマンドは、古い構文に遭遇すると、 1835 // 同等の//go:build制約を追加します。 1836 // 1837 // # Build modes 1838 // 1839 // 'go build'と'go install'コマンドは-buildmode引数を取り、 1840 // どの種類のオブジェクトファイルをビルドするかを示します。現在サポートされている値は以下の通りです: 1841 // 1842 // -buildmode=archive 1843 // リストされた非メインパッケージを.aファイルにビルドします。mainと名付けられたパッケージは無視されます。 1844 // 1845 // -buildmode=c-archive 1846 // リストされたメインパッケージとそれがインポートするすべてのパッケージを 1847 // Cアーカイブファイルにビルドします。呼び出し可能なシンボルは、cgo //exportコメントを使用して 1848 // エクスポートされた関数だけになります。リストされるメインパッケージは1つだけでなければなりません。 1849 // 1850 // -buildmode=c-shared 1851 // リストされたメインパッケージとそれがインポートするすべてのパッケージを 1852 // C共有ライブラリにビルドします。呼び出し可能なシンボルは、cgo //exportコメントを使用して 1853 // エクスポートされた関数だけになります。リストされるメインパッケージは1つだけでなければなりません。 1854 // 1855 // -buildmode=default 1856 // リストされたメインパッケージは実行可能ファイルに、リストされた非メインパッケージは.aファイルに 1857 // ビルドされます(デフォルトの挙動)。 1858 // 1859 // -buildmode=shared 1860 // リストされたすべての非メインパッケージを単一の共有ライブラリに結合し、 1861 // -linksharedオプションでビルドする際に使用します。mainと名付けられたパッケージは無視されます。 1862 // 1863 // -buildmode=exe 1864 // リストされたメインパッケージとそれらがインポートするすべてを実行可能ファイルにビルドします。 1865 // mainと名付けられていないパッケージは無視されます。 1866 // 1867 // -buildmode=pie 1868 // リストされたメインパッケージとそれらがインポートするすべてを 1869 // 位置独立実行可能ファイル(PIE)にビルドします。mainと名付けられていないパッケージは無視されます。 1870 // 1871 // -buildmode=plugin 1872 // リストされたメインパッケージとそれらがインポートするすべてをGoプラグインにビルドします。 1873 // mainと名付けられていないパッケージは無視されます。 1874 // 1875 // AIXでは、-buildmode=c-archiveでビルドされたGoアーカイブを使用するCプログラムをリンクするときは、 1876 // Cコンパイラに-Wl,-bnoobjreorderを渡す必要があります。 1877 // 1878 // # Calling between Go and C 1879 // 1880 // GoとC/C++コード間で呼び出しを行う方法は2つあります。 1881 // 1882 // 最初の方法は、Goディストリビューションの一部であるcgoツールです。 1883 // その使用方法については、cgoのドキュメンテーション(go doc cmd/cgo)を参照してください。 1884 // 1885 // 2つ目の方法は、SWIGプログラムで、これは言語間のインターフェースを作成する一般的なツールです。 1886 // SWIGについての情報は、http://swig.org/ を参照してください。 1887 // go buildを実行するとき、.swig拡張子を持つ任意のファイルはSWIGに渡されます。 1888 // .swigcxx拡張子を持つ任意のファイルは、-c++オプション付きでSWIGに渡されます。 1889 // 1890 // cgoまたはSWIGを使用するとき、go buildは任意の.c、.m、.s、.S 1891 // または.sxファイルをCコンパイラに、任意の.cc、.cpp、.cxxファイルをC++ 1892 // コンパイラに渡します。CCまたはCXX環境変数を設定すると、それぞれ使用するCまたはC++ 1893 // コンパイラを決定できます。 1894 // 1895 // # Build and test caching 1896 // 1897 // goコマンドはビルドの出力をキャッシュして、将来のビルドで再利用します。 1898 // キャッシュデータのデフォルトの場所は、現在のオペレーティングシステムの標準ユーザーキャッシュディレクトリ内の 1899 // go-buildという名前のサブディレクトリです。GOCACHE環境変数を設定すると、このデフォルトが上書きされます。 1900 // 'go env GOCACHE'を実行すると、現在のキャッシュディレクトリが表示されます。 1901 // 1902 // goコマンドは定期的に最近使用されていないキャッシュデータを削除します。 1903 // 'go clean -cache'を実行すると、すべてのキャッシュデータが削除されます。 1904 // 1905 // ビルドキャッシュはGoのソースファイル、コンパイラ、コンパイラオプションなどの変更を正しく反映します。 1906 // そのため、通常の使用ではキャッシュを明示的にクリーンアップする必要はありません。ただし、ビルドキャッシュは 1907 // cgoでインポートされたCライブラリの変更を検出しません。システムのCライブラリに変更を加えた場合、 1908 // キャッシュを明示的にクリーンアップするか、更新されたCライブラリに依存するパッケージの再ビルドを強制するために 1909 // -aビルドフラグを使用する必要があります('go help build'を参照してください)。 1910 // 1911 // goコマンドは、成功したパッケージテストの結果もキャッシュします。 1912 // 詳細は 'go help test' を参照してください。'go clean -testcache' を実行すると、 1913 // すべてのキャッシュされたテスト結果が削除されます(ただし、キャッシュされたビルド結果は削除されません)。 1914 // 1915 // goコマンドはまた、'go test -fuzz' で使用されるファジングの値もキャッシュします。 1916 // 具体的には、ファズ関数に渡されたときにコードカバレッジを拡大した値です。これらの値は通常のビルドや 1917 // テストには使用されませんが、ビルドキャッシュのサブディレクトリに保存されます。 1918 // 'go clean -fuzzcache' を実行すると、すべてのキャッシュされたファジング値が削除されます。 1919 // これにより、一時的にファジングが効果的でなくなる可能性があります。 1920 // 1921 // GODEBUG環境変数を設定すると、キャッシュの状態に関するデバッグ情報の出力を有効にできます: 1922 // 1923 // GODEBUG=gocacheverify=1 を設定すると、goコマンドはキャッシュのエントリの使用をバイパスし、 1924 // 代わりにすべてを再ビルドし、結果が既存のキャッシュエントリと一致するかどうかを確認します。 1925 // 1926 // GODEBUG=gocachehash=1 を設定すると、goコマンドはキャッシュのルックアップキーを構築するために使用する 1927 // すべてのコンテンツハッシュの入力を出力します。出力は大量ですが、キャッシュのデバッグに役立ちます。 1928 // 1929 // GODEBUG=gocachetest=1 を設定すると、goコマンドはキャッシュされたテスト結果を再利用するかどうかの 1930 // 決定についての詳細を出力します。 1931 // 1932 // # Environment variables 1933 // 1934 // goコマンドとそれが呼び出すツールは、設定のために環境変数を参照します。 1935 // 環境変数が設定されていないか空の場合、goコマンドは適切なデフォルト設定を使用します。 1936 // 変数<NAME>の有効な設定を見るには、'go env <NAME>'を実行します。 1937 // デフォルト設定を変更するには、'go env -w <NAME>=<VALUE>'を実行します。 1938 // 'go env -w'を使用して変更されたデフォルトは、os.UserConfigDirによって報告される 1939 // ユーザーごとの設定ディレクトリに保存されるGo環境設定ファイルに記録されます。 1940 // 設定ファイルの場所は、環境変数GOENVを設定することで変更できます。 1941 // 'go env GOENV'は有効な場所を出力しますが、'go env -w'はデフォルトの場所を変更できません。 1942 // 詳細は 'go help env' を参照してください。 1943 // 1944 // 汎用的な環境変数: 1945 // 1946 // GO111MODULE 1947 // goコマンドがモジュール対応モードで実行するか、GOPATHモードで実行するかを制御します。 1948 // "off"、"on"、"auto"のいずれかになります。 1949 // 詳細は https://golang.org/ref/mod#mod-commands を参照してください。 1950 // GCCGO 1951 // 'go build -compiler=gccgo'で実行するgccgoコマンド。 1952 // GOARCH 1953 // コードをコンパイルするアーキテクチャ、またはプロセッサ。 1954 // 例えばamd64、386、arm、ppc64など。 1955 // GOBIN 1956 // 'go install'がコマンドをインストールするディレクトリ。 1957 // GOCACHE 1958 // goコマンドが将来のビルドで再利用するためのキャッシュ情報を保存するディレクトリ。 1959 // GOMODCACHE 1960 // goコマンドがダウンロードしたモジュールを保存するディレクトリ。 1961 // GODEBUG 1962 // 各種デバッグ機能を有効にします。詳細は https://go.dev/doc/godebug を参照してください。 1963 // GOENV 1964 // Go環境設定ファイルの場所。 1965 // 'go env -w'を使用して設定することはできません。 1966 // 環境でGOENV=offを設定すると、デフォルトの設定ファイルの使用が無効になります。 1967 // GOFLAGS 1968 // デフォルトでgoコマンドに適用する-flag=value設定のスペース区切りのリスト。 1969 // 各エントリはスタンドアロンのフラグでなければなりません。 1970 // エントリはスペースで区切られているため、フラグの値にはスペースを含めることはできません。 1971 // コマンドラインにリストされたフラグは、このリストの後に適用されるため、それを上書きします。 1972 // GOINSECURE 1973 // 常に安全でない方法で取得するべきモジュールパスのプレフィックスのグロブパターンのカンマ区切りのリスト 1974 // (Goのpath.Matchの構文)。 1975 // 直接取得される依存関係にのみ適用されます。 1976 // GOINSECUREはチェックサムデータベースの検証を無効にしません。それを達成するためにはGOPRIVATEまたは 1977 // GONOSUMDBを使用します。 1978 // GOOS 1979 // コードをコンパイルするオペレーティングシステム。 1980 // 例えばlinux、darwin、windows、netbsdなど。 1981 // GOPATH 1982 // さまざまなファイルが保存される場所を制御します。詳細は 'go help gopath' を参照してください。 1983 // GOPROXY 1984 // GoモジュールプロキシのURL。詳細は https://golang.org/ref/mod#environment-variables 1985 // および https://golang.org/ref/mod#module-proxy を参照してください。 1986 // GOPRIVATE, GONOPROXY, GONOSUMDB 1987 // 常に直接取得するべきモジュールパスのプレフィックスのグロブパターンのカンマ区切りのリスト 1988 // (Goのpath.Matchの構文)。 1989 // または、チェックサムデータベースと比較すべきでないもの。 1990 // 詳細は https://golang.org/ref/mod#private-modules を参照してください。 1991 // GOROOT 1992 // goツリーのルート。 1993 // GOSUMDB 1994 // 使用するチェックサムデータベースの名前と、オプションでその公開鍵と 1995 // URL。詳細は https://golang.org/ref/mod#authenticating を参照してください。 1996 // GOTOOLCHAIN 1997 // 使用するGoツールチェーンを制御します。詳細は https://go.dev/doc/toolchain を参照してください。 1998 // GOTMPDIR 1999 // goコマンドが一時的なソースファイル、パッケージ、バイナリを書き込むディレクトリ。 2000 // GOVCS 2001 // 一致するサーバーで使用できるバージョン管理コマンドのリスト。 2002 // 詳細は 'go help vcs' を参照してください。 2003 // GOWORK 2004 // モジュール対応モードでは、指定されたgo.workファイルをワークスペースファイルとして使用します。 2005 // デフォルトまたはGOWORKが"auto"の場合、goコマンドは現在のディレクトリとその含まれるディレクトリで 2006 // go.workという名前のファイルを探します。有効なgo.workファイルが見つかった場合、指定されたモジュールは 2007 // まとめてメインモジュールとして使用されます。GOWORKが"off"、または"auto"モードでgo.workファイルが見つからない場合、 2008 // ワークスペースモードは無効になります。 2009 // 2010 // cgoを使用するための環境変数: 2011 // 2012 // AR 2013 // gccgoコンパイラでビルドする際にライブラリアーカイブを操作するために使用するコマンド。 2014 // デフォルトは 'ar' です。 2015 // CC 2016 // Cコードをコンパイルするために使用するコマンド。 2017 // CGO_ENABLED 2018 // cgoコマンドがサポートされているかどうか。0または1。 2019 // CGO_CFLAGS 2020 // cgoがCコードをコンパイルする際にコンパイラに渡すフラグ。 2021 // CGO_CFLAGS_ALLOW 2022 // #cgo CFLAGSソースコードディレクティブに表示を許可する追加のフラグを指定する正規表現。 2023 // CGO_CFLAGS環境変数には適用されません。 2024 // CGO_CFLAGS_DISALLOW 2025 // #cgo CFLAGSソースコードディレクティブに表示を禁止するフラグを指定する正規表現。 2026 // CGO_CFLAGS環境変数には適用されません。 2027 // CGO_CPPFLAGS, CGO_CPPFLAGS_ALLOW, CGO_CPPFLAGS_DISALLOW 2028 // CGO_CFLAGS、CGO_CFLAGS_ALLOW、およびCGO_CFLAGS_DISALLOWと同様ですが、 2029 // Cプリプロセッサ用です。 2030 // CGO_CXXFLAGS, CGO_CXXFLAGS_ALLOW, CGO_CXXFLAGS_DISALLOW 2031 // CGO_CFLAGS、CGO_CFLAGS_ALLOW、およびCGO_CFLAGS_DISALLOWと同様ですが、 2032 // C++コンパイラ用です。 2033 // CGO_FFLAGS, CGO_FFLAGS_ALLOW, CGO_FFLAGS_DISALLOW 2034 // CGO_CFLAGS、CGO_CFLAGS_ALLOW、およびCGO_CFLAGS_DISALLOWと同様ですが、 2035 // Fortranコンパイラ用です。 2036 // CGO_LDFLAGS, CGO_LDFLAGS_ALLOW, CGO_LDFLAGS_DISALLOW 2037 // CGO_CFLAGS、CGO_CFLAGS_ALLOW、およびCGO_CFLAGS_DISALLOWと同様ですが、 2038 // リンカー用です。 2039 // CXX 2040 // C++コードをコンパイルするために使用するコマンド。 2041 // FC 2042 // Fortranコードをコンパイルするために使用するコマンド。 2043 // PKG_CONFIG 2044 // pkg-configツールへのパス。 2045 // 2046 // アーキテクチャ固有の環境変数: 2047 // 2048 // GOARM 2049 // GOARCH=armの場合、コンパイルするARMアーキテクチャ。 2050 // 有効な値は5、6、7です。 2051 // 値の後には、浮動小数点命令の実装方法を指定するオプションを続けることができます。 2052 // 有効なオプションは、softfloat(5のデフォルト)とhardfloat(6と7のデフォルト)です。 2053 // GOARM64 2054 // GOARCH=arm64の場合、コンパイル対象のARM64アーキテクチャ。 2055 // 有効な値はv8.0(デフォルト)、v8.{1-9}、v9.{0-5}です。 2056 // 値の後には、ターゲットハードウェアが実装している拡張を指定するオプションを続けることができます。 2057 // 有効なオプションは、lseと、cryptoです。 2058 // 一部の拡張は、特定のGOARM64バージョンからデフォルトで有効になっていることに注意してください。 2059 // 例えば、lseはv8.1からデフォルトで有効になっています。 2060 // GO386 2061 // GOARCH=386の場合、浮動小数点命令の実装方法。 2062 // 有効な値はsse2(デフォルト)、softfloatです。 2063 // GOAMD64 2064 // GOARCH=amd64の場合、コンパイルするマイクロアーキテクチャレベル。 2065 // 有効な値はv1(デフォルト)、v2、v3、v4です。 2066 // 詳細は https://golang.org/wiki/MinimumRequirements#amd64 を参照してください。 2067 // GOMIPS 2068 // GOARCH=mips{,le}の場合、浮動小数点命令を使用するかどうか。 2069 // 有効な値はhardfloat(デフォルト)、softfloatです。 2070 // GOMIPS64 2071 // GOARCH=mips64{,le}の場合、浮動小数点命令を使用するかどうか。 2072 // 有効な値はhardfloat(デフォルト)、softfloatです。 2073 // GOPPC64 2074 // GOARCH=ppc64{,le}の場合、ターゲットISA(Instruction Set Architecture)。 2075 // 有効な値はpower8(デフォルト)、power9、power10です。 2076 // GORISCV64 2077 // GOARCH=riscv64の場合、コンパイルするRISC-Vユーザーモードアプリケーションプロファイル。 2078 // 有効な値はrva20u64(デフォルト)、rva22u64です。 2079 // https://github.com/riscv/riscv-profiles/blob/main/profiles.adoc を参照してください。 2080 // GOWASM 2081 // GOARCH=wasmの場合、使用する実験的なWebAssembly機能のカンマ区切りのリスト。 2082 // 有効な値はsatconv、signextです。 2083 // 2084 // コードカバレッジに使用する環境変数: 2085 // 2086 // GOCOVERDIR 2087 // "go build -cover"バイナリを実行して生成されたコードカバレッジデータファイルを書き込むディレクトリ。 2088 // GOEXPERIMENT=coverageredesignが有効になっている必要があります。 2089 // 2090 // 特別な目的の環境変数: 2091 // 2092 // GCCGOTOOLDIR 2093 // 設定されている場合、cgoなどのgccgoツールを見つける場所。 2094 // デフォルトはgccgoの設定方法に基づいています。 2095 // GOEXPERIMENT 2096 // 有効化または無効化するツールチェーンの実験のカンマ区切りのリスト。 2097 // 利用可能な実験のリストは時間とともに任意に変更される可能性があります。 2098 // 現在有効な値については、src/internal/goexperiment/flags.goを参照してください。 2099 // 警告: この変数はGoツールチェーン自体の開発とテストのために提供されています。 2100 // それ以外の目的での使用はサポートされていません。 2101 // GO_EXTLINK_ENABLED 2102 // cgoを使用するコードと-linkmode=autoを使用するときに、 2103 // リンカーが外部リンクモードを使用するかどうか。 2104 // 外部リンクモードを無効にするには0、有効にするには1を設定します。 2105 // GIT_ALLOW_PROTOCOL 2106 // Gitによって定義されます。git fetch/cloneで使用できるスキームのコロン区切りのリスト。 2107 // 設定されている場合、明示的に言及されていない任意のスキームは、'go get'によって安全でないと見なされます。 2108 // 変数はGitによって定義されているため、デフォルト値は'go env -w'を使用して設定できません。 2109 // 2110 // 'go env'から利用可能な追加情報(環境からは読み取られません): 2111 // 2112 // GOEXE 2113 // 実行可能ファイルの名前のサフィックス(Windowsでは".exe"、他のシステムでは"")。 2114 // GOGCCFLAGS 2115 // CCコマンドに渡される引数のスペース区切りのリスト。 2116 // GOHOSTARCH 2117 // Goツールチェーンバイナリのアーキテクチャ(GOARCH)。 2118 // GOHOSTOS 2119 // Goツールチェーンバイナリのオペレーティングシステム(GOOS)。 2120 // GOMOD 2121 // メインモジュールのgo.modへの絶対パス。 2122 // モジュール対応モードが有効で、go.modがない場合、GOMODはos.DevNullになります 2123 // (Unix系システムでは"/dev/null"、Windowsでは"NUL")。 2124 // モジュール対応モードが無効の場合、GOMODは空文字列になります。 2125 // GOTOOLDIR 2126 // goツール(compile、cover、docなど)がインストールされているディレクトリ。 2127 // GOVERSION 2128 // インストールされているGoツリーのバージョン。runtime.Versionによって報告されます。 2129 // 2130 // # File types 2131 // 2132 // goコマンドは、各ディレクトリ内の制限された一連のファイルの内容を調べます。 2133 // それは、ファイル名の拡張子に基づいて調査するファイルを特定します。これらの拡張子は次のとおりです。 2134 // 2135 // .go 2136 // Goソースファイル。 2137 // .c, .h 2138 // Cソースファイル。 2139 // パッケージがcgoまたはSWIGを使用している場合、これらは 2140 // OSネイティブのコンパイラ(通常はgcc)でコンパイルされます。それ以外の場合は 2141 // エラーを引き起こします。 2142 // .cc, .cpp, .cxx, .hh, .hpp, .hxx 2143 // C++ソースファイル。cgoまたはSWIGと一緒に使用する場合にのみ有用で、常に 2144 // OSネイティブのコンパイラでコンパイルされます。 2145 // .m 2146 // Objective-Cソースファイル。cgoと一緒に使用する場合にのみ有用で、常に 2147 // OSネイティブのコンパイラでコンパイルされます。 2148 // .s, .S, .sx 2149 // アセンブラソースファイル。 2150 // パッケージがcgoまたはSWIGを使用している場合、これらは 2151 // OSネイティブのアセンブラ(通常はgcc(sic))でアセンブルされます。それ以外の場合は 2152 // Goアセンブラでアセンブルされます。 2153 // .swig, .swigcxx 2154 // SWIG定義ファイル。 2155 // .syso 2156 // システムオブジェクトファイル。 2157 // 2158 // .sysoを除くこれらのタイプの各ファイルにはビルド制約が含まれている場合がありますが、 2159 // goコマンドは、空行または//-スタイルの行コメントでないファイルの最初の項目で 2160 // ビルド制約のスキャンを停止します。詳細はgo/buildパッケージのドキュメンテーションを参照してください。 2161 // 2162 // # The go.mod file 2163 // 2164 // モジュールのバージョンは、そのルートにgo.modファイルを持つソースファイルのツリーによって定義されます。 2165 // goコマンドが実行されると、現在のディレクトリとその親ディレクトリを順に探し、 2166 // メイン(現在の)モジュールのルートをマークするgo.modを見つけます。 2167 // 2168 // go.modファイルの形式は、https://golang.org/ref/mod#go-mod-file で詳しく説明されています。 2169 // 2170 // 新しいgo.modファイルを作成するには、'go mod init'を使用します。詳細は 2171 // 'go help mod init'またはhttps://golang.org/ref/mod#go-mod-initを参照してください。 2172 // 2173 // 不足しているモジュール要件を追加したり、不要な要件を削除したりするには、 2174 // 'go mod tidy'を使用します。詳細は、'go help mod tidy'または 2175 // https://golang.org/ref/mod#go-mod-tidyを参照してください。 2176 // 2177 // 特定のモジュール要件を追加、アップグレード、ダウングレード、または削除するには、 2178 // 'go get'を使用します。詳細は、'go help module-get'または 2179 // https://golang.org/ref/mod#go-getを参照してください。 2180 // 2181 // 他の変更を加えたり、go.modをJSONとして解析して他のツールで使用したりするには、 2182 // 'go mod edit'を使用します。'go help mod edit'または 2183 // https://golang.org/ref/mod#go-mod-editを参照してください。 2184 // 2185 // # GOPATH environment variable 2186 // 2187 // Goパスはインポート文を解決するために使用されます。 2188 // これはgo/buildパッケージによって実装され、そのパッケージで文書化されています。 2189 // 2190 // GOPATH環境変数は、Goのコードを探す場所をリストします。 2191 // Unixでは、値はコロンで区切られた文字列です。 2192 // Windowsでは、値はセミコロンで区切られた文字列です。 2193 // Plan 9では、値はリストです。 2194 // 2195 // 環境変数が設定されていない場合、GOPATHはデフォルトで 2196 // ユーザーのホームディレクトリ内の"go"という名前のサブディレクトリになります 2197 // (Unixでは$HOME/go、Windowsでは%USERPROFILE%\go)。 2198 // ただし、そのディレクトリがGoのディストリビューションを保持している場合は除きます。 2199 // 現在のGOPATHを見るには、"go env GOPATH"を実行します。 2200 // 2201 // カスタムGOPATHを設定するには、https://golang.org/wiki/SettingGOPATH を参照してください。 2202 // 2203 // GOPATHにリストされている各ディレクトリは、所定の構造を持つ必要があります: 2204 // 2205 // srcディレクトリはソースコードを保持します。src以下のパスは 2206 // インポートパスまたは実行可能な名前を決定します。 2207 // 2208 // pkgディレクトリは、インストールされたパッケージオブジェクトを保持します。 2209 // Goツリーと同様に、各ターゲットオペレーティングシステムと 2210 // アーキテクチャのペアは、pkgのサブディレクトリを持ちます 2211 // (pkg/GOOS_GOARCH)。 2212 // 2213 // DIRがGOPATHにリストされているディレクトリである場合、 2214 // DIR/src/foo/barにソースを持つパッケージは"foo/bar"としてインポートでき、 2215 // コンパイルされた形式は"DIR/pkg/GOOS_GOARCH/foo/bar.a"にインストールされます。 2216 // 2217 // binディレクトリは、コンパイルされたコマンドを保持します。 2218 // 各コマンドはそのソースディレクトリに基づいて命名されますが、 2219 // パスの最終要素だけで、パス全体ではありません。つまり、 2220 // DIR/src/foo/quuxにソースを持つコマンドは、 2221 // DIR/bin/quuxにインストールされ、DIR/bin/foo/quuxにはインストールされません。 2222 // "foo/"プレフィックスは削除されるため、 2223 // インストールされたコマンドにアクセスするためにDIR/binをPATHに追加できます。 2224 // GOBIN環境変数が設定されている場合、コマンドはDIR/binの代わりに 2225 // その変数が指すディレクトリにインストールされます。GOBINは絶対パスでなければなりません。 2226 // 2227 // 以下にディレクトリのレイアウトの例を示します: 2228 // 2229 // GOPATH=/home/user/go 2230 // 2231 // /home/user/go/ 2232 // src/ 2233 // foo/ 2234 // bar/ (パッケージbarのgoコード) 2235 // x.go 2236 // quux/ (パッケージmainのgoコード) 2237 // y.go 2238 // bin/ 2239 // quux (インストールされたコマンド) 2240 // pkg/ 2241 // linux_amd64/ 2242 // foo/ 2243 // bar.a (インストールされたパッケージオブジェクト) 2244 // 2245 // Goはソースコードを見つけるために、GOPATHにリストされた各ディレクトリを検索しますが、 2246 // 新しいパッケージは常にリストの最初のディレクトリにダウンロードされます。 2247 // 2248 // 例については、https://golang.org/doc/code.html を参照してください。 2249 // 2250 // # GOPATH and Modules 2251 // 2252 // モジュールを使用すると、GOPATHはインポートの解決にはもはや使用されません。 2253 // しかし、ダウンロードしたソースコード(GOPATH/pkg/mod内)と 2254 // コンパイルされたコマンド(GOPATH/bin内)を保存するためにまだ使用されます。 2255 // 2256 // # Internal Directories 2257 // 2258 // "internal"という名前のディレクトリ内またはその下のコードは、 2259 // "internal"の親でルート化されたディレクトリツリー内のコードのみがインポート可能です。 2260 // 上記のディレクトリレイアウトの拡張版を以下に示します: 2261 // 2262 // /home/user/go/ 2263 // src/ 2264 // crash/ 2265 // bang/ (パッケージbangのgoコード) 2266 // b.go 2267 // foo/ (パッケージfooのgoコード) 2268 // f.go 2269 // bar/ (パッケージbarのgoコード) 2270 // x.go 2271 // internal/ 2272 // baz/ (パッケージbazのgoコード) 2273 // z.go 2274 // quux/ (パッケージmainのgoコード) 2275 // y.go 2276 // 2277 // z.goのコードは"foo/internal/baz"としてインポートされますが、 2278 // そのインポート文はfooでルート化されたサブツリー内のソースファイルにのみ現れます。 2279 // ソースファイルfoo/f.go、foo/bar/x.go、およびfoo/quux/y.goはすべて 2280 // "foo/internal/baz"をインポートできますが、ソースファイルcrash/bang/b.goはできません。 2281 // 2282 // 詳細は https://golang.org/s/go14internal を参照してください。 2283 // 2284 // # Vendor Directories 2285 // 2286 // Go 1.6には、外部依存関係のローカルコピーを使用して、 2287 // それらの依存関係のインポートを満たすためのサポートが含まれています。 2288 // これは一般的にベンダリングと呼ばれます。 2289 // 2290 // "vendor"という名前のディレクトリ以下のコードは、 2291 // "vendor"の親でルート化されたディレクトリツリー内のコードのみがインポート可能であり、 2292 // ベンダー要素までのプレフィックスを省略したインポートパスのみを使用します。 2293 // 2294 // 以下に前のセクションの例を示しますが、 2295 // "internal"ディレクトリが"vendor"に名前変更され、 2296 // 新たにfoo/vendor/crash/bangディレクトリが追加されています: 2297 // 2298 // /home/user/go/ 2299 // src/ 2300 // crash/ 2301 // bang/ (パッケージbangのgoコード) 2302 // b.go 2303 // foo/ (パッケージfooのgoコード) 2304 // f.go 2305 // bar/ (パッケージbarのgoコード) 2306 // x.go 2307 // vendor/ 2308 // crash/ 2309 // bang/ (パッケージbangのgoコード) 2310 // b.go 2311 // baz/ (パッケージbazのgoコード) 2312 // z.go 2313 // quux/ (パッケージmainのgoコード) 2314 // y.go 2315 // 2316 // 内部と同じ可視性ルールが適用されますが、z.goのコードは 2317 // "foo/vendor/baz"ではなく"baz"としてインポートされます。 2318 // 2319 // ソースツリー内でより深いベンダーディレクトリのコードは、 2320 // 上位ディレクトリのコードをシャドウします。fooでルート化されたサブツリー内では、 2321 // "crash/bang"のインポートはトップレベルの"crash/bang"ではなく 2322 // "foo/vendor/crash/bang"に解決されます。 2323 // 2324 // ベンダーディレクトリ内のコードはインポートパスのチェックの対象ではありません 2325 // ('go help importpath'を参照)。 2326 // 2327 // 'go get'がgitリポジトリをチェックアウトまたは更新するとき、 2328 // それは今やサブモジュールも更新します。 2329 // 2330 // ベンダーディレクトリは、'go get'によって初めてチェックアウトされる 2331 // 新しいリポジトリの配置に影響しません:それらは常にメインのGOPATHに配置され、 2332 // ベンダーサブツリーには配置されません。 2333 // 2334 // 詳細は https://golang.org/s/go15vendor を参照してください。 2335 // 2336 // # Module proxy protocol 2337 // 2338 // Goモジュールプロキシは、指定された形式のURLに対するGETリクエストに応答できる任意のWebサーバーです。 2339 // リクエストにはクエリパラメータがないため、固定のファイルシステムから提供されるサイト(file:/// URLを含む)でも 2340 // モジュールプロキシになることができます。 2341 // 2342 // GOPROXYプロトコルの詳細については、 2343 // https://golang.org/ref/mod#goproxy-protocol を参照してください。 2344 // 2345 // # Import path syntax 2346 // 2347 // インポートパス('go help packages'を参照)は、ローカルファイルシステムに保存されているパッケージを示します。 2348 // 一般的に、インポートパスは標準パッケージ(例:"unicode/utf8")またはワークスペースの一つに見つかるパッケージを示します 2349 // (詳細は 'go help gopath'を参照)。 2350 // 2351 // # Relative import paths 2352 // 2353 // ./または../で始まるインポートパスを相対パスと呼びます。 2354 // ツールチェーンは、2つの方法で相対パスをショートカットとしてサポートしています。 2355 // 2356 // まず、相対パスはコマンドライン上での省略形として使用できます。 2357 // "unicode"としてインポートされるコードを含むディレクトリで作業していて、 2358 // "unicode/utf8"のテストを実行したい場合、完全なパスを指定する代わりに 2359 // "go test ./utf8"と入力できます。 2360 // 同様に、逆の状況では、"unicode/utf8"ディレクトリから"unicode"をテストするには 2361 // "go test .."と入力します。すべてのサブディレクトリをテストするための 2362 // "go test ./..."のような相対パターンも許可されています。 2363 // パターン構文の詳細については、'go help packages'を参照してください。 2364 // 2365 // 二つ目、ワークスペース内でないGoプログラムをコンパイルしている場合、 2366 // そのプログラムのインポート文中で相対パスを使用して、ワークスペース外の近くのコードを参照できます。 2367 // これにより、通常のワークスペース外で小さなマルチパッケージプログラムを簡単に試すことができますが、 2368 // そのようなプログラムは "go install"でインストールできません(インストールするためのワークスペースがありません)。 2369 // そのため、それらはビルドするたびに一から再ビルドされます。 2370 // 曖昧性を避けるため、Goプログラムはワークスペース内で相対インポートパスを使用することはできません。 2371 // 2372 // # Remote import paths 2373 // 2374 // 特定のインポートパスは、 2375 // リビジョン管理システムを使用してパッケージのソースコードを取得する方法も 2376 // 説明します。 2377 // 2378 // いくつかの一般的なコードホスティングサイトは特別な構文を持っています: 2379 // 2380 // Bitbucket(Git、Mercurial) 2381 // 2382 // import "bitbucket.org/user/project" 2383 // import "bitbucket.org/user/project/sub/directory" 2384 // 2385 // GitHub(Git) 2386 // 2387 // import "github.com/user/project" 2388 // import "github.com/user/project/sub/directory" 2389 // 2390 // Launchpad(Bazaar) 2391 // 2392 // import "launchpad.net/project" 2393 // import "launchpad.net/project/series" 2394 // import "launchpad.net/project/series/sub/directory" 2395 // 2396 // import "launchpad.net/~user/project/branch" 2397 // import "launchpad.net/~user/project/branch/sub/directory" 2398 // 2399 // IBM DevOps Services(Git) 2400 // 2401 // import "hub.jazz.net/git/user/project" 2402 // import "hub.jazz.net/git/user/project/sub/directory" 2403 // 2404 // 他のサーバーでホストされているコードの場合、インポートパスはバージョン管理タイプで 2405 // 修飾されるか、またはgoツールが動的にhttps/http経由でインポートパスをフェッチし、 2406 // HTMLの<meta>タグからコードがどこに存在するかを発見できます。 2407 // 2408 // コードの場所を宣言するために、形式 2409 // 2410 // repository.vcs/path 2411 // 2412 // のインポートパスは、.vcsサフィックスがあるかないかに関わらず指定されたリポジトリを指定し、 2413 // 名前付きのバージョン管理システムを使用し、そのリポジトリ内のパスを指定します。 2414 // サポートされているバージョン管理システムは次のとおりです: 2415 // 2416 // Bazaar .bzr 2417 // Fossil .fossil 2418 // Git .git 2419 // Mercurial .hg 2420 // Subversion .svn 2421 // 2422 // 例えば、 2423 // 2424 // import "example.org/user/foo.hg" 2425 // 2426 // はexample.org/user/fooまたはfoo.hgのMercurialリポジトリのルートディレクトリを示し、 2427 // 2428 // import "example.org/repo.git/foo/bar" 2429 // 2430 // はexample.org/repoまたはrepo.gitのGitリポジトリのfoo/barディレクトリを示します。 2431 // 2432 // バージョン管理システムが複数のプロトコルをサポートしている場合、 2433 // ダウンロード時にそれぞれが順番に試されます。例えば、Gitのダウンロードでは 2434 // https://から試し、次にgit+ssh://を試します。 2435 // 2436 // デフォルトでは、ダウンロードは既知の安全なプロトコル(例:https、ssh)に制限されています。 2437 // この設定をGitのダウンロードで上書きするには、 2438 // GIT_ALLOW_PROTOCOL環境変数を設定できます(詳細は 'go help environment'を参照)。 2439 // 2440 // インポートパスが既知のコードホスティングサイトでなく、バージョン管理の修飾子もない場合、 2441 // goツールはインポートをhttps/http経由でフェッチし、ドキュメントのHTML 2442 // <head>内の<meta>タグを探します。 2443 // 2444 // メタタグは次の形式を持ちます: 2445 // 2446 // <meta name="go-import" content="import-prefix vcs repo-root"> 2447 // 2448 // import-prefixはリポジトリルートに対応するインポートパスです。 2449 // "go get"でフェッチされるパッケージのプレフィックスまたは完全一致でなければなりません。 2450 // 完全一致でない場合、プレフィックスで別のhttpリクエストが行われ、<meta>タグが一致することを確認します。 2451 // 2452 // メタタグはファイル内で可能な限り早く現れるべきです。 2453 // 特に、生のJavaScriptやCSSの前に現れるべきです、 2454 // これはgoコマンドの制限付きパーサーを混乱させることを避けるためです。 2455 // 2456 // vcsは"bzr"、"fossil"、"git"、"hg"、"svn"のいずれかです。 2457 // 2458 // repo-rootはスキームを含み、.vcs修飾子を含まないバージョン管理システムのルートです。 2459 // 2460 // 例えば、 2461 // 2462 // import "example.org/pkg/foo" 2463 // 2464 // は次のリクエストを引き起こします: 2465 // 2466 // https://example.org/pkg/foo?go-get=1 (推奨) 2467 // http://example.org/pkg/foo?go-get=1 (フォールバック、正しく設定されたGOINSECUREの使用時のみ) 2468 // 2469 // そのページがメタタグ 2470 // 2471 // <meta name="go-import" content="example.org git https://code.org/r/p/exproj"> 2472 // 2473 // を含む場合、goツールはhttps://example.org/?go-get=1が同じメタタグを含むことを確認し、 2474 // その後git clone https://code.org/r/p/exprojをGOPATH/src/example.orgにクローンします。 2475 // 2476 // GOPATHを使用している場合、ダウンロードしたパッケージはGOPATH環境変数にリストされた最初のディレクトリに書き込まれます。 2477 // ('go help gopath-get'と'go help gopath'を参照してください。) 2478 // 2479 // モジュールを使用している場合、ダウンロードしたパッケージはモジュールキャッシュに保存されます。 2480 // https://golang.org/ref/mod#module-cache を参照してください。 2481 // 2482 // モジュールを使用している場合、go-importメタタグの追加のバリアントが認識され、 2483 // バージョン管理システムをリストしているものよりも優先されます。 2484 // そのバリアントは、コンテンツ値のvcsとして"mod"を使用します。例えば: 2485 // 2486 // <meta name="go-import" content="example.org mod https://code.org/moduleproxy"> 2487 // 2488 // このタグは、パスがexample.orgで始まるモジュールを、URL https://code.org/moduleproxyで利用可能なモジュールプロキシからフェッチすることを意味します。 2489 // プロキシプロトコルの詳細については、https://golang.org/ref/mod#goproxy-protocol を参照してください。 2490 // 2491 // # Import path checking 2492 // 2493 // 上記で説明したカスタムインポートパス機能が 2494 // 既知のコードホスティングサイトにリダイレクトすると、 2495 // 結果として得られる各パッケージには、カスタムドメインまたは既知のホスティングサイトを使用した 2496 // 2つの可能なインポートパスがあります。 2497 // 2498 // パッケージステートメントは、次の2つの形式のいずれかのコメントによって 2499 // 直後(次の改行前)に続く場合、"インポートコメント"を持つと言われます: 2500 // 2501 // package math // import "path" 2502 // package math /* import "path" */ 2503 // 2504 // goコマンドは、インポートコメントを持つパッケージをインストールを拒否します 2505 // それがそのインポートパスによって参照されている場合を除きます。このように、インポートコメントを使用すると、 2506 // パッケージ作者はカスタムインポートパスが使用され、基礎となるコードホスティングサイトへの直接パスが使用されないことを確認できます。 2507 // 2508 // ベンダーツリー内で見つかったコードに対してはインポートパスのチェックが無効化されます。 2509 // これにより、インポートコメントを更新することなく、コードをベンダーツリーの代替の場所にコピーすることが可能になります。 2510 // 2511 // モジュールを使用している場合も、インポートパスのチェックは無効化されます。 2512 // インポートパスコメントは、go.modファイルのモジュールステートメントによって廃止されます。 2513 // 2514 // 詳細は https://golang.org/s/go14customimport を参照してください。 2515 // 2516 // # Modules, module versions, and more 2517 // 2518 // モジュールはGoが依存関係を管理する方法です。 2519 // 2520 // モジュールは、パッケージの集合であり、一緒にリリース、バージョン管理、 2521 // 配布されます。モジュールはバージョン管理リポジトリから直接ダウンロードすることも、 2522 // モジュールプロキシサーバーからダウンロードすることもできます。 2523 // 2524 // モジュールに関する一連のチュートリアルについては、 2525 // https://golang.org/doc/tutorial/create-module を参照してください。 2526 // 2527 // モジュールに関する詳細なリファレンスについては、https://golang.org/ref/mod を参照してください。 2528 // 2529 // デフォルトでは、goコマンドはhttps://proxy.golang.orgからモジュールをダウンロードすることができます。 2530 // また、https://sum.golang.orgのチェックサムデータベースを使用してモジュールを認証することもできます。 2531 // これらのサービスは、GoogleのGoチームによって運営されています。 2532 // これらのサービスのプライバシーポリシーは、それぞれ 2533 // https://proxy.golang.org/privacy と https://sum.golang.org/privacy で利用可能です。 2534 // 2535 // goコマンドのダウンロード動作は、GOPROXY、GOSUMDB、GOPRIVATEなどの環境変数を使用して設定することができます。 2536 // 詳細は 'go help environment' と https://golang.org/ref/mod#private-module-privacy を参照してください。 2537 // 2538 // # Module authentication using go.sum 2539 // 2540 // goコマンドがモジュールのzipファイルやgo.modファイルをモジュールキャッシュにダウンロードするとき、 2541 // それは暗号学的ハッシュを計算し、それを既知の値と比較して、ファイルが初めてダウンロードされてから変更されていないことを確認します。 2542 // 既知のハッシュは、モジュールのルートディレクトリにあるgo.sumという名前のファイルに保存されます。 2543 // ハッシュは、GOSUMDB、GOPRIVATE、およびGONOSUMDBの値に応じて、チェックサムデータベースからもダウンロードされることがあります。 2544 // 2545 // 詳細は、https://golang.org/ref/mod#authenticating を参照してください。 2546 // 2547 // # Package lists and patterns 2548 // 2549 // 多くのコマンドは一連のパッケージに適用されます: 2550 // 2551 // go <action> [packages] 2552 // 2553 // 通常、[packages]はインポートパスのリストです。 2554 // 2555 // ルートパスであるか、.または..要素で始まるインポートパスは、 2556 // ファイルシステムパスとして解釈され、そのディレクトリ内のパッケージを示します。 2557 // 2558 // それ以外の場合、インポートパスPは、GOPATH環境変数にリストされている 2559 // いくつかのDIRで、DIR/src/Pディレクトリに見つかるパッケージを示します 2560 // (詳細は 'go help gopath' を参照してください)。 2561 // 2562 // インポートパスが指定されていない場合、アクションは現在のディレクトリ内のパッケージに適用されます。 2563 // 2564 // goツールでビルドするパッケージに対して使用すべきでない、4つの予約済みのパス名があります: 2565 // 2566 // - "main"は、スタンドアロンの実行可能ファイルのトップレベルのパッケージを示します。 2567 // 2568 // - "all"は、すべてのGOPATHツリーで見つかったすべてのパッケージに展開されます。 2569 // 例えば、'go list all'はローカルシステム上のすべてのパッケージをリストします。 2570 // モジュールを使用している場合、"all"はメインモジュール内のすべてのパッケージと 2571 // それらの依存関係に展開され、それらのいずれかのテストに必要な依存関係も含みます。 2572 // 2573 // - "std"はallと似ていますが、標準のGoライブラリ内のパッケージだけに展開されます。 2574 // 2575 // - "cmd"はGoリポジトリのコマンドとそれらの内部ライブラリに展開されます。 2576 // 2577 // "cmd/"で始まるインポートパスは、Goリポジトリ内のソースコードのみに一致します。 2578 // 2579 // インポートパスに1つ以上の"..."ワイルドカードが含まれている場合、それはパターンとなります。 2580 // これらのワイルドカードは、空文字列やスラッシュを含む文字列を含む任意の文字列に一致することができます。 2581 // このようなパターンは、GOPATHツリー内で見つかった名前がパターンに一致するすべてのパッケージディレクトリに展開されます。 2582 // 2583 // よく使うパターンを便利にするために、2つの特別なケースがあります。 2584 // まず、パターンの最後の/...は空文字列に一致することができるため、 2585 // net/...はnetとそのサブディレクトリ内のパッケージ、例えばnet/httpの両方に一致します。 2586 // 次に、ワイルドカードを含む任意のスラッシュで区切られたパターン要素は、 2587 // ベンダードパッケージのパスの"vendor"要素のマッチには参加しないため、 2588 // ./...は./vendorや./mycode/vendorのサブディレクトリ内のパッケージには一致しませんが、 2589 // ./vendor/...と./mycode/vendor/...は一致します。 2590 // ただし、コードを含むvendorという名前のディレクトリ自体はベンダードパッケージではないことに注意してください: 2591 // cmd/vendorはvendorという名前のコマンドになり、パターンcmd/...はそれに一致します。 2592 // ベンダリングについての詳細は、golang.org/s/go15vendorを参照してください。 2593 // 2594 // インポートパスは、リモートリポジトリからダウンロードされるパッケージを指定することもできます。 2595 // 詳細は 'go help importpath' を実行してください。 2596 // 2597 // プログラム内のすべてのパッケージは、一意のインポートパスを持つ必要があります。 2598 // 慣習的に、各パスはあなたが所有する一意のプレフィックスで始まるように配置されます。 2599 // 例えば、Google内部で使用されるパスはすべて'google'で始まり、 2600 // リモートリポジトリを示すパスはコードへのパス、例えば'github.com/user/repo'で始まります。 2601 // 2602 // プログラム内のパッケージは一意のパッケージ名を持つ必要はありませんが、 2603 // 特別な意味を持つ2つの予約済みのパッケージ名があります。 2604 // 名前mainはコマンドを示し、ライブラリではありません。 2605 // コマンドはバイナリにビルドされ、インポートすることはできません。 2606 // 名前documentationは、ディレクトリ内の非Goプログラムのドキュメンテーションを示します。 2607 // パッケージdocumentation内のファイルはgoコマンドによって無視されます。 2608 // 2609 // 特別なケースとして、パッケージリストが単一のディレクトリからの.goファイルのリストである場合、 2610 // コマンドはそれらのファイルだけから構成される単一の合成パッケージに適用され、 2611 // それらのファイル内のビルド制約は無視され、ディレクトリ内の他のファイルも無視されます。 2612 // 2613 // "."または"_"で始まるディレクトリ名とファイル名は、goツールによって無視されます。 2614 // また、"testdata"という名前のディレクトリも無視されます。 2615 // 2616 // # Configuration for downloading non-public code 2617 // 2618 // goコマンドはデフォルトで、公開Goモジュールミラーのproxy.golang.orgからモジュールをダウンロードします。 2619 // また、ソースに関係なくダウンロードしたモジュールを公開Goチェックサムデータベースのsum.golang.orgで検証するようにデフォルト設定されています。 2620 // これらのデフォルトは、公開されているソースコードに対してはうまく機能します。 2621 // 2622 // GOPRIVATE環境変数は、goコマンドがプライベート(公開されていない)とみなすモジュールを制御し、 2623 // そのためプロキシやチェックサムデータベースを使用しないようにします。 2624 // この変数は、モジュールパスのプレフィックスのglobパターン(Goのpath.Matchの構文)のカンマ区切りのリストです。 2625 // 例えば、 2626 // 2627 // GOPRIVATE=*.corp.example.com,rsc.io/private 2628 // 2629 // は、goコマンドがgit.corp.example.com/xyzzy、rsc.io/private、rsc.io/private/quuxなど、 2630 // いずれかのパターンに一致するパスプレフィックスを持つ任意のモジュールをプライベートとして扱うようにします。 2631 // 2632 // モジュールのダウンロードと検証を細かく制御するために、GONOPROXYとGONOSUMDB環境変数は同じ種類のglobリストを受け入れ、 2633 // プロキシとチェックサムデータベースを使用するかどうかの具体的な決定についてGOPRIVATEを上書きします。 2634 // 2635 // 例えば、会社がプライベートモジュールを提供するモジュールプロキシを運用している場合、 2636 // ユーザーはgoを次のように設定します: 2637 // 2638 // GOPRIVATE=*.corp.example.com 2639 // GOPROXY=proxy.example.com 2640 // GONOPROXY=none 2641 // 2642 // GOPRIVATE変数はまた、GOVCS変数の"public"と"private"のパターンを定義するために使用されます。 2643 // その使用法については、'go help vcs'を参照してください。その使用法では、GOPRIVATEはGOPATHモードでも適用されます。 2644 // その場合、それはモジュールパスではなくインポートパスに一致します。 2645 // 2646 // 'go env -w'コマンド('go help env'を参照)は、これらの変数を将来のgoコマンドの呼び出しに設定するために使用できます。 2647 // 2648 // 詳細は、https://golang.org/ref/mod#private-modules を参照してください。 2649 // 2650 // # Testing flags 2651 // 2652 // 'go test'コマンドは、'go test'自体に適用されるフラグと、 2653 // 結果として得られるテストバイナリに適用されるフラグの両方を取ります。 2654 // 2655 // フラグのいくつかはプロファイリングを制御し、"go tool pprof"に適した実行プロファイルを書き出します。 2656 // "go tool pprof -h"を実行して、詳細情報を得てください。 2657 // pprofの--alloc_space、--alloc_objects、および--show_bytesオプションは、情報がどのように表示されるかを制御します。 2658 // 2659 // 'go test'コマンドは以下のフラグを認識し、 2660 // 任意のテストの実行を制御します: 2661 // 2662 // -bench regexp 2663 // 正規表現に一致するベンチマークのみを実行します。 2664 // デフォルトでは、ベンチマークは実行されません。 2665 // すべてのベンチマークを実行するには、'-bench .'または'-bench=.'を使用します。 2666 // 正規表現は、括弧で囲まれていないスラッシュ(/)文字で分割され、 2667 // 一連の正規表現になり、ベンチマークの識別子の各部分は、 2668 // シーケンス内の対応する要素と一致する必要があります(もしあれば)。 2669 // マッチの可能な親は、サブベンチマークを識別するためにb.N=1で実行されます。 2670 // 例えば、-bench=X/Yが与えられた場合、Xに一致するトップレベルのベンチマークは 2671 // b.N=1で実行され、Yに一致する任意のサブベンチマークを見つけるために、 2672 // それらは完全に実行されます。 2673 // 2674 // -benchtime t 2675 // 各ベンチマークのイテレーションをt(time.Durationとして指定)の時間だけ実行します 2676 // (例えば、-benchtime 1h30s)。 2677 // デフォルトは1秒(1s)です。 2678 // 特別な構文Nxは、ベンチマークをN回実行することを意味します 2679 // (例えば、-benchtime 100x)。 2680 // 2681 // -count n 2682 // 各テスト、ベンチマーク、およびfuzz seedをn回実行します(デフォルトは1)。 2683 // -cpuが設定されている場合、GOMAXPROCSの値ごとにn回実行します。 2684 // 例は常に一度だけ実行されます。-countは-fuzzによってマッチした 2685 // fuzzテストには適用されません。 2686 // 2687 // -cover 2688 // カバレッジ分析を有効にします。 2689 // カバレッジはコンパイル前にソースコードに注釈を付けることで動作するため、 2690 // カバレッジが有効な状態でのコンパイルエラーやテスト失敗は、 2691 // 元のソースと一致しない行番号を報告する可能性があります。 2692 // 2693 // -covermode set,count,atomic 2694 // テスト対象のパッケージのカバレッジ分析のモードを設定します。 2695 // デフォルトは"set"ですが、-raceが有効な場合は"atomic"になります。 2696 // 値: 2697 // set: bool: このステートメントは実行されますか? 2698 // count: int: このステートメントは何回実行されますか? 2699 // atomic: int: countと同じですが、マルチスレッドのテストで正確です。 2700 // 大幅にコストがかかります。 2701 // -coverを設定します。 2702 // 2703 // -coverpkg pattern1,pattern2,pattern3 2704 // 各テストで、パターンに一致するパッケージにカバレッジ分析を適用します。 2705 // デフォルトでは、各テストはテスト対象のパッケージのみを分析します。 2706 // パッケージパターンの説明については、'go help packages'を参照してください。 2707 // -coverを設定します。 2708 // 2709 // -cpu 1,2,4 2710 // テスト、ベンチマーク、またはfuzzテストを実行するためのGOMAXPROCS値のリストを指定します。 2711 // デフォルトは現在のGOMAXPROCSの値です。-cpuは-fuzzによってマッチしたfuzzテストには適用されません。 2712 // 2713 // -failfast 2714 // 最初のテスト失敗後、新しいテストを開始しない。 2715 // 2716 // -fullpath 2717 // エラーメッセージで完全なファイル名を表示します。 2718 // 2719 // -fuzz regexp 2720 // 正規表現にマッチするfuzzテストを実行します。指定された場合、 2721 // コマンドライン引数はメインモジュール内の正確に1つのパッケージと一致し、 2722 // regexpはそのパッケージ内の正確に1つのfuzzテストと一致する必要があります。 2723 // ファジングは、テスト、ベンチマーク、他のfuzzテストのシードコーパス、 2724 // および例が完了した後に行われます。詳細は、テストパッケージのドキュメンテーションの 2725 // Fuzzingセクションを参照してください。 2726 // 2727 // -fuzztime t 2728 // ファジング中にfuzzターゲットのイテレーションをt(time.Durationとして指定)の時間だけ実行します 2729 // (例えば、-fuzztime 1h30s)。 2730 // デフォルトは永遠に実行することです。 2731 // 特別な構文Nxは、fuzzターゲットをN回実行することを意味します 2732 // (例えば、-fuzztime 1000x)。 2733 // 2734 // -fuzzminimizetime t 2735 // 各最小化試行中にfuzzターゲットのイテレーションをt(time.Durationとして指定)の時間だけ実行します 2736 // (例えば、-fuzzminimizetime 30s)。 2737 // デフォルトは60sです。 2738 // 特別な構文Nxは、fuzzターゲットをN回実行することを意味します 2739 // (例えば、-fuzzminimizetime 100x)。 2740 // 2741 // -json 2742 // JSON形式で詳細な出力とテスト結果をログに記録します。これは、 2743 // マシンが読み取れる形式で-vフラグと同じ情報を提供します。 2744 // 2745 // -list regexp 2746 // 正規表現に一致するテスト、ベンチマーク、fuzzテスト、または例をリストします。 2747 // テスト、ベンチマーク、fuzzテスト、または例は実行されません。 2748 // これはトップレベルのテストのみをリストします。サブテストやサブベンチマークは 2749 // 表示されません。 2750 // 2751 // -parallel n 2752 // t.Parallelを呼び出すテスト関数の並列実行を許可し、 2753 // シードコーパスを実行する際にt.Parallelを呼び出すfuzzターゲットを許可します。 2754 // このフラグの値は、同時に実行するテストの最大数です。 2755 // ファジング中、このフラグの値は、T.Parallelが呼び出されるかどうかに関係なく、 2756 // 同時にfuzz関数を呼び出すことができるサブプロセスの最大数です。 2757 // デフォルトでは、-parallelはGOMAXPROCSの値に設定されています。 2758 // -parallelをGOMAXPROCSよりも高い値に設定すると、特にファジング時に、 2759 // CPUの競合によりパフォーマンスが低下する可能性があります。 2760 // -parallelは単一のテストバイナリ内でのみ適用されることに注意してください。 2761 // 'go test'コマンドは、-pフラグの設定に従って、異なるパッケージのテストを 2762 // 並行して実行することもあります('go help build'を参照)。 2763 // 2764 // -run regexp 2765 // 正規表現に一致するテスト、例、およびfuzzテストのみを実行します。 2766 // テストの場合、正規表現は括弧で囲まれていないスラッシュ(/)文字で分割され、 2767 // 一連の正規表現になり、テストの識別子の各部分は、 2768 // シーケンス内の対応する要素と一致する必要があります(もしあれば)。 2769 // マッチの可能な親も実行されるため、-run=X/YはXに一致するすべてのテストを 2770 // マッチさせ、実行し、結果を報告します。これには、Yに一致するサブテストがないものも含まれます。 2771 // なぜなら、それらのサブテストを探すためには、それらを実行する必要があるからです。 2772 // -skipも参照してください。 2773 // 2774 // -short 2775 // 長時間実行されるテストに対して、その実行時間を短縮するよう指示します。 2776 // デフォルトではオフですが、all.bashの間に設定されるため、 2777 // Goツリーのインストールは、健全性チェックを実行できますが、 2778 // 徹底的なテストを実行する時間を費やすことはありません。 2779 // 2780 // -shuffle off,on,N 2781 // テストとベンチマークの実行順序をランダムにします。 2782 // デフォルトではオフです。-shuffleがonに設定されている場合、 2783 // システムクロックを使用してランダム化をシードします。-shuffleが 2784 // 整数Nに設定されている場合、Nはシード値として使用されます。 2785 // どちらの場合も、再現性のためにシードが報告されます。 2786 // 2787 // -skip regexp 2788 // 正規表現に一致しないテスト、例、fuzzテスト、およびベンチマークのみを実行します。 2789 // -runと-benchのように、テストとベンチマークの場合、正規表現は括弧で囲まれていない 2790 // スラッシュ(/)文字で分割され、一連の正規表現になり、テストの識別子の各部分は、 2791 // シーケンス内の対応する要素と一致する必要があります(もしあれば)。 2792 // 2793 // -timeout d 2794 // テストバイナリがdより長く実行される場合、パニックします。 2795 // dが0の場合、タイムアウトは無効になります。 2796 // デフォルトは10分(10m)です。 2797 // 2798 // -v 2799 // 冗長な出力:実行されるすべてのテストをログに記録します。また、テストが成功しても 2800 // LogとLogfの呼び出しからすべてのテキストを印刷します。 2801 // 2802 // -vet list 2803 // "go test"中の"go vet"の呼び出しを設定して、カンマ区切りのvetチェックのリストを使用します。 2804 // リストが空の場合、"go test"は、常に対処する価値があると考えられるチェックのキュレーションされたリストで"go vet"を実行します。 2805 // リストが"off"の場合、"go test"は"go vet"を全く実行しません。 2806 // 2807 // 以下のフラグも 'go test' によって認識され、実行中のテストをプロファイルするために使用できます: 2808 // 2809 // -benchmem 2810 // ベンチマークのメモリ割り当て統計を出力します。 2811 // Cで作成された割り当てやC.mallocを使用した割り当てはカウントされません。 2812 // 2813 // -blockprofile block.out 2814 // すべてのテストが完了したときに、指定されたファイルにゴルーチンのブロックプロファイルを書き込みます。 2815 // -cと同様にテストバイナリを書き込みます。 2816 // 2817 // -blockprofilerate n 2818 // runtime.SetBlockProfileRateをnで呼び出すことで、ゴルーチンのブロックプロファイルの詳細を制御します。 2819 // 'go doc runtime.SetBlockProfileRate'を参照してください。 2820 // プロファイラは、プログラムがブロックされている間、平均してnナノ秒ごとに1つのブロックイベントをサンプリングすることを目指します。 2821 // デフォルトでは、-test.blockprofileがこのフラグなしで設定されている場合、すべてのブロックイベントが記録されます。 2822 // これは-test.blockprofilerate=1と同等です。 2823 // 2824 // -coverprofile cover.out 2825 // すべてのテストが通過した後に、カバレッジプロファイルをファイルに書き込みます。 2826 // -coverを設定します。 2827 // 2828 // -cpuprofile cpu.out 2829 // 終了する前に、指定されたファイルにCPUプロファイルを書き込みます。 2830 // -cと同様にテストバイナリを書き込みます。 2831 // 2832 // -memprofile mem.out 2833 // すべてのテストが通過した後に、割り当てプロファイルをファイルに書き込みます。 2834 // -cと同様にテストバイナリを書き込みます。 2835 // 2836 // -memprofilerate n 2837 // runtime.MemProfileRateを設定することで、より精密(かつ高価)なメモリ割り当てプロファイルを有効にします。 2838 // 'go doc runtime.MemProfileRate'を参照してください。 2839 // すべてのメモリ割り当てをプロファイルするには、-test.memprofilerate=1を使用します。 2840 // 2841 // -mutexprofile mutex.out 2842 // すべてのテストが完了したときに、指定されたファイルにミューテックス競合プロファイルを書き込みます。 2843 // -cと同様にテストバイナリを書き込みます。 2844 // 2845 // -mutexprofilefraction n 2846 // 競合するミューテックスを保持するゴルーチンのスタックトレースの1/nをサンプリングします。 2847 // 2848 // -outputdir directory 2849 // プロファイリングからの出力ファイルを指定されたディレクトリに配置します。 2850 // デフォルトでは、"go test"が実行されているディレクトリです。 2851 // 2852 // -trace trace.out 2853 // 終了する前に、指定されたファイルに実行トレースを書き込みます。 2854 // 2855 // これらのフラグはすべて、-test.vのように、オプションの'test.'プレフィックス付きでも認識されます。 2856 // ただし、生成されたテストバイナリ('go test -c'の結果)を直接呼び出すときは、プレフィックスが必須です。 2857 // 2858 // 'go test'コマンドは、認識したフラグを適切に書き換えたり削除したりします。 2859 // これは、オプションのパッケージリストの前後の両方で、テストバイナリを呼び出す前に行われます。 2860 // 2861 // 例えば、コマンド 2862 // 2863 // go test -v -myflag testdata -cpuprofile=prof.out -x 2864 // 2865 // は、テストバイナリをコンパイルし、次のように実行します。 2866 // 2867 // pkg.test -test.v -myflag testdata -test.cpuprofile=prof.out 2868 // 2869 // (-xフラグは、テスト自体ではなく、goコマンドの実行にのみ適用されるため、削除されます。) 2870 // 2871 // プロファイルを生成するテストフラグ(カバレッジ以外)は、プロファイルの分析時に使用するために、 2872 // テストバイナリをpkg.testに残します。 2873 // 2874 // 'go test'がテストバイナリを実行するとき、それは対応するパッケージのソースコードディレクトリ内から行います。 2875 // テストによっては、生成されたテストバイナリを直接呼び出すときにも同様にする必要があるかもしれません。 2876 // そのディレクトリはモジュールキャッシュ内に位置している可能性があり、 2877 // それは読み取り専用であり、チェックサムによって検証されるため、 2878 // テストはユーザーが明示的に要求した場合(-fuzzフラグのように、 2879 // 失敗をtestdata/fuzzに書き込む場合など)を除き、 2880 // それまたはモジュール内の他の任意のディレクトリに書き込んではなりません。 2881 // 2882 // コマンドラインのパッケージリストが存在する場合、それはgo testコマンドが認識しない任意のフラグよりも前に現れなければなりません。 2883 // 上記の例を続けると、パッケージリストは-myflagの前に現れなければならず、-vのどちら側に現れても構いません。 2884 // 2885 // 'go test'がパッケージリストモードで実行されるとき、'go test'は成功したパッケージテスト結果をキャッシュして、 2886 // テストの不必要な繰り返し実行を避けます。テストキャッシュを無効にするには、 2887 // キャッシュ可能なフラグ以外の任意のテストフラグまたは引数を使用します。 2888 // テストキャッシュを明示的に無効にする慣用的な方法は、-count=1を使用することです。 2889 // 2890 // テストバイナリの引数が既知のフラグまたはパッケージ名として解釈されるのを防ぐには、 2891 // -argsを使用します('go help test'を参照)。 2892 // これはコマンドラインの残りをテストバイナリに解釈せず、変更せずに渡します。 2893 // 2894 // 例えば、コマンド 2895 // 2896 // go test -v -args -x -v 2897 // 2898 // は、テストバイナリをコンパイルし、次のように実行します。 2899 // 2900 // pkg.test -test.v -x -v 2901 // 2902 // 同様に、 2903 // 2904 // go test -args math 2905 // 2906 // は、テストバイナリをコンパイルし、次のように実行します。 2907 // 2908 // pkg.test math 2909 // 2910 // 最初の例では、-xと2つ目の-vはテストバイナリにそのまま渡され、goコマンド自体には影響を与えません。 2911 // 2つ目の例では、引数mathはテストバイナリに渡され、パッケージリストとして解釈される代わりになります。 2912 // 2913 // # Testing functions 2914 // 2915 // 'go test'コマンドは、テスト対象のパッケージに対応する"*_test.go"ファイル内にテスト、ベンチマーク、および例示関数を見つけることを期待しています。 2916 // 2917 // テスト関数はTestXxxという名前のものであり(ここで、Xxxは小文字で始まらない)、以下のシグネチャを持つべきです。 2918 // 2919 // func TestXxx(t *testing.T) { ... } 2920 // 2921 // ベンチマーク関数はBenchmarkXxxという名前のものであり、以下のシグネチャを持つべきです。 2922 // 2923 // func BenchmarkXxx(b *testing.B) { ... } 2924 // 2925 // ファズテストはFuzzXxxという名前のものであり、以下のシグネチャを持つべきです。 2926 // 2927 // func FuzzXxx(f *testing.F) { ... } 2928 // 2929 // 例示関数はテスト関数と似ていますが、成功や失敗を報告するために*testing.Tを使用する代わりに、 2930 // 出力をos.Stdoutに印刷します。 2931 // 関数内の最後のコメントが"Output:"で始まる場合、出力はコメントと完全に比較されます(下記の例を参照)。 2932 // 最後のコメントが"Unordered output:"で始まる場合、出力はコメントと比較されますが、行の順序は無視されます。 2933 // このようなコメントがない例示はコンパイルされますが実行されません。 2934 // "Output:"の後にテキストがない例示は、コンパイルされ、実行され、出力を生成しないことが期待されます。 2935 // 2936 // GodocはExampleXxxの本文を表示して、関数、定数、または変数Xxxの使用方法を示します。 2937 // レシーバタイプがTまたは*TのメソッドMの例はExampleT_Mと名付けられます。 2938 // ある関数、定数、または変数に対して複数の例が存在する場合があり、これらは末尾の_xxxで区別されます。 2939 // ここで、xxxは大文字で始まらない接尾辞です。 2940 // 2941 // 以下に例示の例を示します: 2942 // 2943 // func ExamplePrintln() { 2944 // Println("The output of\nthis example.") 2945 // // Output: The output of 2946 // // this example. 2947 // } 2948 // 2949 // ここには、出力の順序が無視される別の例があります: 2950 // 2951 // func ExamplePerm() { 2952 // for _, value := range Perm(4) { 2953 // fmt.Println(value) 2954 // } 2955 // 2956 // // Unordered output: 4 2957 // // 2 2958 // // 1 2959 // // 3 2960 // // 0 2961 // } 2962 // 2963 // テストファイル全体が例として提示されます。それは単一の 2964 // 例示関数、少なくとも1つの他の関数、型、変数、または定数 2965 // 宣言を含み、テスト、ベンチマーク、またはファズテストがない場合です。 2966 // 2967 // 詳細情報については、testingパッケージのドキュメンテーションを参照してください。 2968 // 2969 // # Controlling version control with GOVCS 2970 // 2971 // 'go get'コマンドは、gitのようなバージョン管理コマンドを実行して、インポートされたコードをダウンロードすることができます。 2972 // この機能は、任意のサーバーからコードをインポートできる分散型のGoパッケージエコシステムにとって重要ですが、 2973 // 悪意のあるサーバーが呼び出されたバージョン管理コマンドを使って意図しないコードを実行する方法を見つけた場合、 2974 // セキュリティ問題にもなります。 2975 // 2976 // 機能とセキュリティの懸念をバランス良く取るために、'go get'コマンドはデフォルトで公開サーバーからコードをダウンロードするために 2977 // gitとhgのみを使用します。 2978 // しかし、プライベートサーバーからコードをダウンロードするためには、任意の既知のバージョン管理システム(bzr、fossil、git、hg、svn)を使用します。 2979 // プライベートサーバーとは、GOPRIVATE変数('go help private'を参照)に一致するパッケージをホスティングするサーバーを指します。 2980 // GitとMercurialのみを許可する背後にある理由は、これらの2つのシステムが、信頼できないサーバーのクライアントとして実行される問題に最も注目されているからです。 2981 // 対照的に、Bazaar、Fossil、およびSubversionは主に信頼できる、認証された環境で使用されており、攻撃面としてはあまり注目されていません。 2982 // 2983 // バージョン管理コマンドの制限は、直接バージョン管理アクセスを使用してコードをダウンロードするときにのみ適用されます。 2984 // プロキシからモジュールをダウンロードするとき、'go get'は代わりに常に許可されているプロキシプロトコルを使用します。 2985 // デフォルトでは、'go get'コマンドは公開パッケージに対してGoモジュールミラー(proxy.golang.org)を使用し、 2986 // プライベートパッケージまたはミラーが公開パッケージを提供を拒否するとき(通常は法的な理由で)だけバージョン管理にフォールバックします。 2987 // したがって、クライアントはデフォルトでBazaar、Fossil、またはSubversionリポジトリから提供される公開コードにアクセスできます。 2988 // なぜなら、それらのダウンロードはGoモジュールミラーを使用し、カスタムサンドボックスを使用してバージョン管理コマンドを実行するセキュリティリスクを引き受けるからです。 2989 // 2990 // GOVCS変数は、特定のパッケージ(モジュールまたはインポートパスで識別)の許可されたバージョン管理システムを変更するために使用できます。 2991 // GOVCS変数は、モジュール対応モードとGOPATHモードの両方でパッケージをビルドするときに適用されます。 2992 // モジュールを使用するとき、パターンはモジュールパスに対して一致します。 2993 // GOPATHを使用するとき、パターンはバージョン管理リポジトリのルートに対応するインポートパスに一致します。 2994 // 2995 // GOVCS設定の一般的な形式は、カンマで区切られたpattern:vcslistルールのリストです。 2996 // パターンは、モジュールまたはインポートパスの1つ以上の先頭要素と一致する必要があるグロブパターンです。 2997 // vcslistは、許可されたバージョン管理コマンドのパイプで区切られたリストであり、または"all"は任意の既知のコマンドの使用を許可し、 2998 // "off"はすべてのコマンドの使用を禁止します。 2999 // モジュールがvcslist "off"のパターンと一致する場合でも、元のサーバーが"mod"スキームを使用すると、 3000 // goコマンドがモジュールをGOPROXYプロトコルを使用してダウンロードするよう指示するため、それでもダウンロードされる可能性があります。 3001 // リスト内の最初に一致するパターンが適用されます、後のパターンも一致するかもしれません。 3002 // 3003 // 例えば、以下を考えてみましょう: 3004 // 3005 // GOVCS=github.com:git,evil.com:off,*:git|hg 3006 // 3007 // この設定では、モジュールまたはインポートパスが 3008 // github.com/で始まるコードはgitのみを使用できます。evil.comのパスはバージョン管理コマンドを使用できません。 3009 // そして、他のすべてのパス(*はすべてに一致)はgitまたはhgのみを使用できます。 3010 // 3011 // 特別なパターン"public"と"private"は、公開および非公開のモジュールまたはインポートパスに一致します。 3012 // パスがGOPRIVATE変数と一致する場合、そのパスは非公開です。それ以外の場合は公開です。 3013 // 3014 // GOVCS変数のルールが特定のモジュールまたはインポートパスと一致しない場合、 3015 // 'go get'コマンドはデフォルトのルールを適用します。これは現在、GOVCS表記法で'public:git|hg,private:all'と要約できます。 3016 // 3017 // 任意のパッケージに対して任意のバージョン管理システムを無制限に使用するには、以下を使用します: 3018 // 3019 // GOVCS=*:all 3020 // 3021 // バージョン管理のすべての使用を無効にするには、以下を使用します: 3022 // 3023 // GOVCS=*:off 3024 // 3025 // 'go env -w'コマンド('go help env'を参照)を使用して、将来のgoコマンド呼び出しのためのGOVCS変数を設定できます。 3026 package main