2日ちょいですが、goの勉強をした内容をまとめてみました。
環境構築
install script を作ってみた。
goをインストールしただけでREPLは使えない。
最小構成を提供し、必要に応じてインストールというのは正しい。
Hello World
当たり前だが、golangのプロジェクトレイアウトに沿って構築。
Makefileを使ってビルドするのが慣例らしい。
Module
Redmine REST Clientのモジュールを作ってみた。
rest.goコマンドライン引数解析、JSON解析
ローカルで開発したモジュールは相対パスで記述しない。
go.modのreplacce directiveを使って相対パスに置き換える仕組みを使うのが一般的らしい。
手こずったところ
- Naming Rule
- publicの関数が先頭大文字
- JSONの構造体も先頭大文字
Test
go test を実行するだけで簡単にテストが実行できる。
しかも、カバレッジ計測も簡単にできるのが嬉しい。
まだ、テストユーティリティが使いこなせていない。
> go test -v ponta027.dip.jp/rest -coverprofile = covert.out
> go tool cover -html= cover.out -o cover.html
これだけでカバレッジ結果がHTML出力される。
使ってみた感想
- 動かすだけであれば学習コストが低い。
- コンパイラが未使用変数、importがあるとエラーとなるため、クリーンなコードがかける。
- NamingRuleは慣れるまで大変。
- 周辺ツールが結構充実している。
- クロスコンパイルが簡単にできる
全然知らないことが多いので、これからもう少し勉強してみようかと思う。