サーチ…
前書き
go
コマンドは、Go開発の管理を可能にするコマンドラインプログラムです。これは、コードの構築、実行、テスト、およびその他のさまざまなGo関連のタスクを可能にします。
Go Run
go run
は、実行可能ファイルを作成せずにプログラムを実行します。開発に大いに役立ちます。 run
はパッケージ名がmainの パッケージのみを実行します。
デモンストレーションのために、単純なHello Worldの例main.go
を使用します。
package main
import fmt
func main() {
fmt.Println("Hello, World!")
}
ファイルにコンパイルせずに実行:
go run main.go
出力:
Hello, World!
パッケージ内で複数のファイルを実行する
パッケージがメインで複数のファイルに分割されている場合は、 run
コマンドに他のファイルを含める必要があります。
go run main.go assets.go
ビルドする
go build
は、プログラムを実行可能ファイルにコンパイルします。
デモンストレーションのために、単純なHello Worldの例main.goを使用します。
package main
import fmt
func main() {
fmt.Println("Hello, World!")
}
プログラムをコンパイルする:
go build main.go
build
は実行可能プログラム(この場合はmain
またはmain.exe
ます。このファイルを実行すると、 Hello, World!
という出力が表示されますHello, World!
。 Goをインストールしていない同様のシステムにコピーして実行可能にし 、そこで実行することもできます。
ビルドでOSまたはアーキテクチャを指定する:
env
before build
変更することで、構築するシステムまたはアーキテクチャを指定できます。
env GOOS=linux go build main.go # builds for Linux
env GOARCH=arm go build main.go # builds for ARM architecture
複数のファイルを構築する
(つまり、 それがインポート可能なパッケージではありません )あなたのパッケージが複数のファイルに分割され、パッケージ名がメインである場合は、ビルドするために、すべてのファイルを指定する必要があります。
go build main.go assets.go # outputs an executable: main
パッケージの構築
main
というパッケージをビルドするには、次のコマンドを使います:
go build . # outputs an executable with name as the name of enclosing folder
きれいになる
go clean
を実行go build
と、プログラムでgo build
を呼び出すときに作成された一時ファイルがクリーンアップされます。また、Makefileから残されたファイルをクリーンアップします。
Go Fmt
go fmt
は、プログラムのソースコードを読みやすく、理解しやすい、きちんとした慣用方法でフォーマットします。公開したり、バージョン管理システムにコミットしたりする前に、任意のソースでgo fmt
を使用して読みやすくすることをお勧めします。
ファイルをフォーマットするには:
go fmt main.go
またはディレクトリ内のすべてのファイル:
go fmt myProject
gofmt -s
( go fmt
は go fmt
ない )を使ってできるコードを単純化しようとすることもできます。
gofmt
( go fmt
gofmt
ない )は、コードをリファクタリングするためにも使用できます。それはGoを理解しているので、単純な検索と置き換えよりも強力です。たとえば、このプログラム( main.go
)が指定されているとします。
package main
type Example struct {
Name string
}
func (e *Example) Original(name string) {
e.Name = name
}
func main() {
e := &Example{"Hello"}
e.Original("Goodbye")
}
Original
のメソッドをRefactor
でgofmt
置き換えることができます:
gofmt -r 'Original -> Refactor' -d main.go
どちらがdiffを生成するでしょうか?
-func (e *Example) Original(name string) {
+func (e *Example) Refactor(name string) {
e.Name = name
}
func main() {
e := &Example{"Hello"}
- e.Original("Goodbye")
+ e.Refactor("Goodbye")
}
取ってきます
go get
はインポートパスで指定されたパッケージを依存関係と共にダウンロードします。次に、「go install」のような名前付きパッケージをインストールします。 Getは、インストールを制御するビルドフラグも受け入れます。
go to github.com/maknahar/phonecountry
新しいパッケージをチェックアウトするとき、getはターゲットディレクトリ$GOPATH/src/<import-path>
ます。 GOPATHに複数のエントリが含まれている場合、getは最初のエントリを使用します。同様に、 $GOPATH/bin
コンパイルされたバイナリをインストールします。
パッケージをチェックアウトまたは更新するときは、ローカルにインストールされたGoのバージョンと一致するブランチまたはタグを探します。最も重要なルールは、ローカルインストールでバージョン "go1"が実行されている場合、 "go1"という名前のブランチまたはタグを検索することです。そのようなバージョンが存在しない場合は、パッケージの最新バージョンを取得します。
go get
を使用go get
と、 -d
フラグによってダウンロードされますが、指定されたパッケージはインストールされません。 -u
フラグを使用すると、パッケージとその依存関係を更新できます。
ベンダのディレクトリに保存されているコードをチェックアウトしたり更新したりすることはありません。
Go env
go env [var ...]
printsは環境情報を表示します。
デフォルトでは、すべての情報が出力されます。
$go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/vikashkv/work"
GORACE=""
GOROOT="/usr/local/Cellar/go/1.7.4_1/libexec"
GOTOOLDIR="/usr/local/Cellar/go/1.7.4_1/libexec/pkg/tool/darwin_amd64"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/xf/t3j24fjd2b7bv8c9gdr_0mj80000gn/T/go-build785167995=/tmp/go-build -gno-record-gcc-switches -fno-common"
CXX="clang++"
CGO_ENABLED="1"
1つ以上の変数名が引数として指定されている場合、名前付き変数の値はそれぞれの行に出力されます。
$go env GOOS GOPATH
darwin
/Users/vikashkv/work