サーチ…
前書き
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