Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cmd/go: update doc.go to tip #69

Merged
merged 1 commit into from
Sep 11, 2014
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 83 additions & 2 deletions src/cmd/go/doc.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ The commands are:
env Go環境変数をプリントします
fix パッケージにgo tool fixを実行します
fmt パッケージのソースにgofmtを実行します
generate ソースを処理してGoのファイルを生成します
get パッケージのダウンロードとインストール(依存関係含む)を行います
install パッケージのコンパイルとインストール(依存関係含む)を行います
list パッケージのリストを表示します
Expand Down Expand Up @@ -70,7 +71,7 @@ buildフラグは、build、install、run、testコマンドで共通です。
デフォルトはCPUの利用可能数です。
-race
データレースの検出を有効にします。
linux/amd64、darwin/amd64、windows/amd64のみでサポートされます。
linux/amd64、freebsd/amd64、darwin/amd64、windows/amd64のみでサポートされます。
-v
コンパイルされるパッケージ名をプリントします。
-work
Expand Down Expand Up @@ -186,6 +187,81 @@ gofmtに特定のオプションを付加して実行する場合は、gofmtと
See also: go fix, go vet.


ソースを処理してGoのファイルを生成する

Usage:

go generate [-run regexp] [file.go... | packages]

generateはファイルのディレクティブ中で記述されたコマンドを実行します。
これらのコマンドではどのような処理をすることもできますが、ここでの意図はyaccの実行のようなGoのソースファイルの生成もしくは更新です。

go generateはgo buildやgo get、go testなどによって自動で実行されることはありません。
必ず、明示的に実行する必要があります。

ディレクティブは、次の形式の一行コメントとして記述され、

//go:generate command argument...

コマンド(command)は実行されるべきジェネレータで、ローカルで実行可能な実行ファイルに対応します(注: "//go"にスペースはありません)。
これはshellのパス中にある(gofmt)か、完全に修飾されたパス(/usr/you/bin/mytool)か、以下に述べるコマンドの別名である必要があります。

引数(argument...)はスペースで区切られたトークンか、ダブルクオートされた文字列で、ジェネレータへ個々の引数として実行時に与えられます。

クオートされた文字列はGoの文法を使い、実行前に評価されます; クオートされた文字列は1個の引数としてジェネレータに渡されます。

go generateはジェネレータの実行時にいくつかの変数を設定します:

$GOARCH
実行時のアーキテクチャ (arm, amd64など)
$GOOS
実行時のオペレーティングシステム (linux, windowsなど)
$GOFILE
ファイルの名前
$GOPACKAGE
ディレクティブを含むファイルのパッケージ名

変数の展開やクオートされた文字列の評価以外には、コマンドライン上でのglob処理のような特別な処理は行われません。

コマンドが実行される直前には、英数字から成る環境変数への参照、例えば $GOFILE や $HOME はコマンドライン上ですべて展開されます。
変数展開のための文法はオペレーティングシステムによらず $NAME です。
評価順序の関係で、クオートされた文字列の内部であっても変数は展開されます。
もし変数名 NAME がセットされていなければ、 $NAME は空文字列に展開されます。

次の形式のディレクティブ、

//go:generate -command xxx args...

は、引数argsとして実行されるコマンドxxxを定義します。
ソースファイルのこれ以降の部分のみで有効です。
これは、コマンドの別名をつくったり、複数語からなるジェネレータを扱うために使うことができます。
例えば、

//go:generate -command yacc go tool yacc

は、ジェネレータ"go tool yacc"を表すコマンド"yacc"を定義します。

generateは、複数のパッケージをコマンドラインで与えられた順序で一つずつ処理します。
一つのパッケージ内では、generateはソースファイルを名前順に一つずつ処理します。
一つのソースファイル内では、generateはファイル中で現れた順に一つずつジェネレータを起動します。

もしジェネレータが一つでもエラーの終了ステータスを返せば、generateはそのパッケージの残りの処理をすべてスキップします。

ジェネレータはパッケージのソースディレクトリ上で実行されます。

go generateは一つの指定フラグを受け付けます:

-run=""
もし空でなければ、正規表現として解釈され、マッチするコマンドをもつディレクティブのみが実行されます。

また、-v、-nや-xなど、標準的なビルドフラグも受け付けます。
フラグ-vは処理されるパッケージとファイルの名前を出力します。
フラグ-nは実行されるであろうコマンドを出力します。
フラグ-xは実行されたコマンドを出力します。

パッケージの指定についてのさらに詳しい情報は、'go help packages'を参照してください。


パッケージおよび依存関係のダウンロードとインストール

Usage:
Expand Down Expand Up @@ -546,6 +622,11 @@ Goはソースコードを探す際、GOPATHにリストアップされている
import "launchpad.net/~user/project/branch"
import "launchpad.net/~user/project/branch/sub/directory"

IBM DevOps Services (Git)

import "hub.jazz.net/git/user/project"
import "hub.jazz.net/git/user/project/sub/directory"

その他のサーバがホストするコードについては、インポートパスにバージョン管理のタイプの修飾子を指定するか、go toolにてhttps/httpでインポートパスを動的に取得しHTMLの<meta>タグからコードがある場所を探します。

コードの場所を指定する際、以下のインポートパス形式
Expand Down Expand Up @@ -789,6 +870,6 @@ godocは関数、定数、変数XXXの利用方法の説明のためにExampleXX
さらに詳しい情報についてはtestingパッケージのドキュメントを参照してください。


本ドキュメントは以下のドキュメントを翻訳しています:https://code.google.com/p/go/source/browse/src/cmd/go/doc.go?r=7b833ef60b534ade4a58c40066e5874ca665c7d5
本ドキュメントは以下のドキュメントを翻訳しています:https://code.google.com/p/go/source/browse/src/cmd/go/doc.go?r=528863ac401ff24391b01bbaf88080e5b85c0534
*/
package main