サーチ…


前書き

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 -sgo fmt go fmt ない )を使ってできるコードを単純化しようとすることもできます。

gofmtgo 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のメソッドをRefactorgofmt置き換えることができます:

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


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow