C の三項演算子に相当する Go の慣用表現は何ですか? 質問する

C の三項演算子に相当する Go の慣用表現は何ですか? 質問する

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)

コンパイラはこのような単純な関数をインライン化するため、処理が高速になり、明確になり、コードが短くなります。

おすすめ記事