以下はどこかの記事を読んで知った方法なのだが、どこだったかわからなくなってしまったので、改めてここに記す(つまり、自分が考えついた方法ではない)
*_test.go
を使わないテストコードとかサンプルコードを書きたい時どうするか。
普通は別フォルダーに main パッケージを作って、そこに書く。が、いちいちフォルダーを分けていたら、フォルダーツリーが無駄に複雑になってしまう。
だが、サンプルコードを go run
でしか使わないという縛りにすれば、同じフォルダーにそのサンプルコードのソースを混ぜておくことができる。そのためにはサンプルコードを以下のような形で始めればよい。
~/go/src/github.com/zetamatta/orelib/example1.go
// +build run package main import ( _ "github.com/zetamatta/orelib" ) // :以下省略
先頭に // +build run
があるため、このソースファイルは go build
の処理対象外になる(処理対象に入れるには go build -tags=run
としないといけない)。だが、go run bar.go
する分には // +build run
による無効化は通じない。
それゆえ:
- 被テストパッケージのビルドは
go build
(パッケージには example1.go は含まれない) - テスト実行は
go run example1.go
と使い分けが効き、同一フォルダーにパッケージコードとサンプルコードを共存することができるというわけだ。