Goで特定の環境向けのビルドのときだけ取り込むソースを指定する

goはビルド時の環境変数の設定で異なる環境向けのバイナリを生成できるのだが、開発環境ではWindowsLinuxを使っていて、実行環境はLinuxということがあり、Linux向けのバイナリだけsyslogを使いたくなった。 そんなときはbuild constraintという機能を使うと解決できる。

ファイルの冒頭(package宣言より前)に

//go:build linux

とかくとそのファイルはLinux向けのビルドのときにしか取り込まれなくなる。 windows向けだったらwindowsmac向けだったらdarwinなどと書く。 アーキテクチャの指定も可能。