Skip to main content

Get full access to 実用 Go言語 ―システム開発の現場で知っておきたいアドバイス and 60K+ other titles, with a free 10-day trial of O'Reilly.

There are also live events, courses curated by job role, and more.

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

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

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

4.5.1 基本の分岐

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

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

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

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

Get 実用 Go言語 ―システム開発の現場で知っておきたいアドバイス now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.

Don’t leave empty-handed

Get Mark Richards’s Software Architecture Patterns ebook to better understand how to design components—and how they should interact.

It’s yours, free.

Get it now
Cover of Software Architecture Patterns

Check it out now on O’Reilly

Dive in for free with a 10-day trial of the O’Reilly learning platform—then explore all the other resources our members count on to build skills and solve problems every day.

Start your free trial Become a member now