C/C++ (およびそのファミリーの多くの言語) では、条件に応じて変数を宣言および初期化するための一般的な慣用句として、三項条件演算子が使用されます。
int index = val > 0 ? val : -val
Goには条件演算子がありません。上記と同じコードを実装する最も慣用的な方法は何でしょうか?私は次の解決策にたどり着きましたが、かなり冗長に思えます
var index int
if val > 0 {
index = val
} else {
index = -val
}
もっと良いものはありますか?
ベストアンサー1
指摘されているように(そしておそらく驚くことではないが)、使用することはif+else
確かに慣用的な方法Go で条件分岐を実行する。
ただし、完全なコード ブロックに加えてvar+if+else
、次のスペルもよく使用されます。
index := val
if val <= 0 {
index = -val
}
と同等の繰り返しコードブロックがある場合はint value = a <= b ? a : b
、それを保持する関数を作成できます。
func min(a, b int) int {
if a <= b {
return a
}
return b
}
...
value := min(a, b)
コンパイラはこのような単純な関数をインライン化するため、処理が高速になり、明確になり、コードが短くなります。