[解決済み】C言語の三項演算子に相当するGoの慣用句は何ですか?
2022-03-24 01:34:03
質問
C/C++(およびその系列の多くの言語)では、条件によって変数を宣言し初期化する一般的なイディオムとして、三項条件演算子を使用します。
int index = val > 0 ? val : -val
Goには条件演算子がありません。上記のコードと同じものを実装する最も慣用的な方法は何でしょうか?私は次のような解決策にたどり着きましたが、かなり冗長なようです。
var index int
if val > 0 {
index = val
} else {
index = -val
}
何か良い方法はないでしょうか?
解決方法は?
指摘されているように(当然といえば当然なのですが)、このような場合に使用するのが
if+else
は、確かに
慣用法
を実行します。
本格的な
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)
コンパイラはこのような単純な関数をインライン化するので、高速で、よりわかりやすく、短くすることができます。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] go run: 非メインパッケージは実行できません
-
[解決済み] Notepad++ 用の Go 言語プラグイン
-
[解決済み] Go パッケージは log.Fatal を使うべきですか、そしてそれはいつですか?
-
[解決済み] 環境変数GOPRIVATEの設定方法
-
[解決済み] go install` は `go.mod` にレコードを追加します。
-
[解決済み] Goでfloat64をintに変換する
-
[解決済み] コンソールで標準入力から読み込むにはどうすればよいですか?
-
[解決済み】C言語の三項演算子に相当するGoの慣用句は何ですか?
-
[解決済み】GoはREPLを提供しますか?
-
[解決済み] ワンライナーでif else文を書くには?重複