Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

  1. トップページ
  2. Go辞典
  3. go build / run / test

go build / run / test

Goには開発でよく使う公式コマンドが揃っています。『go build』でコンパイル、『go run』で直接実行、『go test』でテスト実行、『go fmt』でコードフォーマット、『go vet』で静的解析を行えます。

構文
// ビルドして実行ファイルを生成します。
// go build                   // カレントパッケージをビルドします。
// go build -o myapp main.go  // 出力ファイル名を指定します。
// go build ./...             // 全パッケージをビルドします。

// ビルドせずに直接実行します(開発中に便利)。
// go run main.go
// go run .

// テストを実行します。
// go test ./...         // 全テストを実行します。
// go test -v ./...      // 詳細出力で実行します。
// go test -run TestXxx  // 特定のテストだけ実行します。
// go test -cover        // カバレッジを計測します。

// コードをフォーマットします(gofmtに準拠)。
// go fmt ./...

// 静的解析で問題を検出します。
// go vet ./...
コマンド一覧
コマンド概要
go buildパッケージをコンパイルして実行ファイルを生成します。
go run [file]Goソースを直接実行します(一時ビルド後に実行)。
go test_test.goファイルのテストを実行します。
go fmtソースコードをGoの標準スタイルにフォーマットします。
go vetバグになりやすいコードを静的解析で検出します。
go installパッケージをビルドしてGOPATH/binにインストールします。
go doc [pkg]パッケージのドキュメントを表示します。
go envGo環境変数を表示します。
go cleanビルド成果物やキャッシュを削除します。
go versionGoのバージョンを表示します。
サンプルコード
// --- ファイル: main.go ---

package main

import "fmt"

// Add は2つの整数を加算して返します。
func Add(a, b int) int {
    return a + b
}

// Greet は挨拶文字列を返します。
func Greet(name string) string {
    return "Hello, " + name + "!"
}

func main() {
    fmt.Println(Add(3, 4))
    fmt.Println(Greet("Go"))
}

// --- ファイル: main_test.go ---
// テストファイルは _test.go で終わる名前にします。

/*
package main

import "testing"

// TestAdd はAdd関数のテストです。
func TestAdd(t *testing.T) {
    got := Add(3, 4)
    want := 7
    if got != want {
        t.Errorf("Add(3, 4) = %d, want %d", got, want)
    }
}

// TestGreet はGreet関数のテストです。
func TestGreet(t *testing.T) {
    got := Greet("Go")
    want := "Hello, Go!"
    if got != want {
        t.Errorf("Greet(%q) = %q, want %q", "Go", got, want)
    }
}
*/

// --- ビルドと実行の例 ---

// go run main.go で直接実行します。
// 出力: 7
//       Hello, Go!

// go build -o myapp でビルドします。
// ./myapp で実行します。

// go test -v でテスト実行します。
// --- PASS: TestAdd (0.00s)
// --- PASS: TestGreet (0.00s)
// PASS

// go test -cover でカバレッジを確認します。
// PASS    coverage: 100.0% of statements
概要

Goのテストは関数名が『Test』で始まり、引数に『*testing.T』を取る関数として定義します。テストファイルのファイル名は『_test.go』で終わらせる必要があります。

『go fmt』はプロジェクト全体に一貫したコードスタイルを適用します。GoではコードスタイルについてチームやAIと議論することなく、この標準フォーマットに統一するのが文化です。

go vetはコンパイルは通るが実行時にバグになりやすいコード(printf書式ミスなど)を検出します。CIパイプラインに組み込むことを推奨します。

モジュール管理は『Go Modules』を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。