LoginSignup
22
14

More than 5 years have passed since last update.

goコマンドざっくりまとめ

Last updated at Posted at 2017-12-12

ざっくりまとめです。

サンプルコード

こちらを使用して紹介していきます

package main

import (
    "fmt"
)

func main() {
    fmt.Println(adder(1, 2))
}

func adder(a, b int) int {
    return a + b
}

go run

binaryファイルを作成せずに実行することができる

$ go run main.go
3

go build

binaryファイルを作成する

$ go build main.go

## 実行成功すると何も表示されない
## mybinaryみたいなものが生成される

$ ./mybinary
3

クロスコンパイルも容易にできる
例えばLinux用に配布したい場合

$ GOOS=linux GOARCH=amd64 go build main.go

## 同じようにmybinaryが生成される

go clean

buildとかtestとかで出力したものを削除してくれる

_obj/            Makefilesにより残された、古いオブジェクトディレクトリ
_test/           Makefilesにより残された、古いテストディレクトリ
_testmain.go     Makefilesにより残された、古いgotestファイル
test.out         Makefilesにより残された、古いテストログ
build.out        Makefilesにより残された、古いテストログ
*.[568ao]        Makefilesにより残された、古いオブジェクトファイル

DIR(.exe)        go buildから生成
DIR.test(.exe)   go test -cから生成
MAINFILE(.exe)   go build MAINFILE.goから生成
*.so             SWIGから生成

go test

_test.goというファイルのテストを実行してくれる

$ go test -v .
=== RUN   Test_adder
=== RUN   Test_adder/ok
--- PASS: Test_adder (0.00s)
    --- PASS: Test_adder/ok (0.00s)
PASS
ok      path/to/mybinary    0.006s

test単体でも実行可能

$ go test -run Test_adder
=== RUN   Test_adder
=== RUN   Test_adder/ok
--- PASS: Test_adder (0.00s)
    --- PASS: Test_adder/ok (0.00s)
PASS
ok      path/to/mybinary    0.006s

option 一部

  • -parallel n
    • テスト関数の並行実行がこれにて可能
    • n並行数を決められる
  • -timeout t
    • テストがtよりも長く実行している場合、panic強制的にpanicを起こす
  • -memprofile mem.out
    • 全てのテスト完了後に指定したファイルにメモリプロファイルを残す事ができる
  • -benchmem
    • ベンチマークのためのメモリ割り当てを出力する

go get [option] package

  • -u
    • 常に最新の状態をダウンロードする
    • つけない場合はローカルにないもののみをダウンロード
  • -t
    • ダウンロード後ビルド前にテストを実行してくれる
    • 失敗した場合はビルドしないようになる

go generate

// go:generate go get -u package
package main

上記のようにコメントしておくとgenerate以下のコマンドを実行してくれる。

Makefileとかと組み合わせると便利っすね

# ビルドした後に実行とか
build:
    go build
    ./mybinary

# 依存関係ツールとか使ってない人はこんな感じにしておくとか
deps:
    go get -u path/to/~~~
    go get -u path/to/~~~
    go get -u path/to/~~~

# テスト実行   
test:
    go test -v .

# カバレッジの計測
covarage:
    go test -v . -coverprofile=cover.out
    go tool cover cover.out

まとめ

結論Godocをしっかり読めよって話。
Goコマンド関連に限らずGodoc読むことが大事だね

link

22
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
14