go_samples

Go学習のために以下のサンプルコードを記載

  • 構造体、配列の参照・値渡しの動作確認
  • interfaceの実装例
  • goroutineのテスト また、goのエコシステム・ツールも一通り試せるようにしている
  • テストコード(一部のみ実装)
  • ベンチマーク・プロファイリング
  • ドキュメンテーション

Setup

go get

実行

go run main.go

テスト実行

_test.go ファイルの Test関数がテスト対象となる。 コンパイル時に除外されるので、プロダクトコードと同じパッケージにテストファイル入れるのが一般的?

go test -v ./...

カバレッジ付きでテスト実行

go test -v -cover ./...

# カバレッジをwebで見る
go test -coverprofile=coverage.out ./...
go tool cover -html=coverage.out

ベンチマーク計測

Benchmark~とつく関数のパフォーマンスを計測できる。

cd <計測したいパッケージ>
go test -bench=. -benchmem

プロファイリング

ベンチマーク計測して各処理のメモリ・CPU消費などを計測できる。

cd <計測したいパッケージ>

# 性能計測
go test -memprofile=mem.out -bench=.
go test -blockprofile=block.out -bench=.
go test -cpuprofile=cpu.out -bench=.

# pprofツールで可視化
go tool pprof -text -nodecount=10 ./struct_sample.test block.out

コマンドライン上でドキュメンテーションを見る

パッケージや公開関数などをコマンドライン上で確認できる

go doc <パッケージ名>

go doc <パッケージ名>.<関数/構造体など>

# 例
go doc ./struct_sample
go doc ./struct_sample.TestStruct

ドキュメンテーション一覧

Web上で標準パッケージ、自作パッケージのドキュメントが見れる。

godoc -http ":3000"

Goプロジェクトセットアップ

初期化

go mod init <パッケージ名>

パッケージインストール

go get <外部パッケージ>