Monors Note

Pythonとそれ以外いろいろ

golang のtoolの管理に関して

開発をしているとソース内では使用しないが、便利なtoolをgo getしバージョンの管理をしておきたいことがある。 例えば、golang.org/x/tools/cmd/stringerなど。
しかし、go moduleで依存関係を管理している場合、ソースないで使用されていないライブラリは管理できないという制約がある。これをtools.goを作成する方法で回避できるのでメモしておく。

github.com

// +build tools 

package tools

import _ "golang.org/x/tools/cmd/stringer"

build時に今回作成したtoolsファイルが除外される様にbuild constraintsを使用している。

golang.org

これを使用することで、build -tags=hogeで切り替えを行うことが可能であるが、これを指定しないので、binaryにはtoolsのファイルは含まれない事になる。

qiita.com