多くのプログラミング言語には、三項演算子と呼ばれる、if-elseの連鎖のように評価する演算子(?:)が存在します。
しかし、Goには三項演算子がありません。この記事では、なぜGoに三項演算子がないのかについて掘り下げていきます。
三項演算子とは
三項演算子とは、条件値に使用する「?:」演算子のことです。
RubyやJavaScriptにおける、三項演算子の構文は以下の通りです。
戻り値 = 条件式 ? trueの値 : falseの値
使い方の例です。
result = t > 0 ? 100 : 30
上記の例だと、tが0より大きければ100を返し、そうでなければ30を返すという意味になります。
そして、このような構文がGolangにはありません。
なぜGolangに三項演算子が無いのか?
どうしてGolangに三項演算子が存在しないのか?
その理由はシンプルに設計上の選択だからです。三項演算子は一旦理解すれば簡単な演算子ですが、実はコードを書き始めたばかりの人にとっては分かりづらい書き方です。
そのため、Goというプログラミング言語は、if-elseというシンプルなアプローチを選びました。
少し長い書き方ですが、三項演算子より読みやすくなっています。
三項演算子に代わる対処法
これは上記でも述べていますがif-elseブロックを使えば同じことができます。また、同じコードをよりシンプルに表現することができます。
以下は、if-elseブロックを使用した簡単なコード例です。
if i > 0 {
v = 1
} else {
v = 0
}
三項演算子より少し冗長ですが、これはGoの作成者が選択した設計上のものです。
その理由のひとつは、三項演算子の乱用によって、読みにくい複雑なコードを作ってしまった(作りやすくなる)ことです。
if-elseブロックを使うしかないのは、よりクリーンで読みやすいアプローチを強制するためです。