4.5 実装を切り替えるためのさまざまな方法

これまで、さまざまな機能を紹介してきました。プログラミング言語には多種多様な機能がありますが、乱暴にまとめてしまえばだいたいが「条件分岐」です。条件分岐と言えばif文やswitch文が有名ですが、インタフェースを使い、インスタンスの種別によって呼び出されるメソッドを切り替えるのも「条件分岐」です。

どの条件分岐を利用するかを適切に決定できることは、正しいコーディングへの第一歩です。

4.5.1 基本の分岐

文法上、「条件分岐」と呼ばれているif文やswitch文は、一番プリミティブな条件分岐です。これは、実行時に初めて結果が決まる条件分岐です。その条件のソースとなるのは、コマンドライン引数や環境変数、外部のファイルとなるでしょう。

やや婉曲な、抽象度の高い条件分岐は、関数の変数やインタフェースを使ったものです。条件文の代わりに、変数に関数を代入し実行します。あるいはインタフェースに実体を入れてから実行します。これらはコードブロックの代わりに関数の単位で処理を切り替えますが、型によって切り替え(分岐し)ます。これらはいったん評価してしまう(代入してしまう)と、実行時のペナルティは少なくなります。

Goの文法で用意されている中で、一番融通が効かない(コンパイル時に決定されてしまう)ものが、条件ビルドです。条件ビルドはビルド時のターゲットによって結果が決まります。対象のOSによってロジックを切り替える、CPUによってより高速な命令を使うなどです。関数変数やインタフェースの切り替え法よりもエクストリームです。条件判断の実行はコンパイル時に行うため、実行時のペナルティはゼロです。

条件ビルドは次のようなコメントをソースコードの先頭に入れるか、ファイル名にアンダースコアをつけて ...