質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Q&A

1回答

1856閲覧

go言語でif文で処理をしない書き方

T_retasu

総合スコア13

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

0グッド

0クリップ

投稿2022/01/11 02:50

go言語です

x := "アイウエオ" index := suffixarray.New([]byte(x)) if len(index.Lookup([]byte("かき"), -1)) > 0 && len(index.Lookup([]byte("さし"), -1)) == 0 && len(index.Lookup([]byte("たち"), -1)) == 0{ 処理 }

この場合3つの条件がいずれも当てはまらないか判定されるので、「条件 or 条件 or 条件」にし、一つでも当てはまれば処理をしない、と書いた方が処理時間は短くなるのあっているのでしょうか?
その場合処理の箇所はどのように書けばいいのでしょうか?

if 条件 { 何も書かない? } else { 処理 }

でいいのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melian

2022/01/11 03:31

本題とは関係のない話ですが、 not (条件1 and 条件2 and 条件3) == (not 条件1) or (not 条件2) or (not 条件3) となります(既にご存知でしたらすみません)。ですが、実際にこの様な書き方をすると、gopls などの LSP サーバを利用している場合には、 QF1001: could apply De Morgan's law という notice が表示されることになります(ド・モルガンの法則については Wikipedia でも参照してみて下さい)。
guest

回答1

0

go言語の実装がどうなってるのかは知らないですが、一般的には、

条件1 or 条件2 or 条件3

という条件文のとき、左から評価していき、true となった時点であとの条件の評価はすっ飛ばしてtrueと判断する、ということを行いますんで、おっしゃるように処理時間は短くなる、可能性はありますね
同様に、

条件1 and 条件2 and 条件3

のときは、falseと評価された時点であとはすっ飛ばしてfalseと判断します

んで、これの否定をとりたいなら、

not(条件1 or 条件2 or 条件3)

でいいでしょう

投稿2022/01/11 04:02

編集2022/01/11 04:03
y_waiwai

総合スコア87749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

T_retasu

2022/01/11 06:10

処理時間が短くなるのでしたらそちらで試してみようと思います ありがとうございます
Zuishin

2022/01/11 06:30 編集

条件それぞれの結果が true になる確率と false になる確率の比率によって平均的な処理時間が決まるので、それで一概に処理時間が短くなることはないと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問