Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 論理演算子 | 制御構造
Go入門

book論理演算子

メニューを表示するにはスワイプしてください

もう一つの演算子のクラスは論理演算子と呼ばれます。他の数値を扱う演算子とは異なり、論理演算子はブール値を扱うために設計されています。論理演算子は3種類あります:

演算子論理
!NOT
||OR
&&AND

NOT(!)演算子は、ブール式を否定(反転)するために使用されます。以下はif文を含む簡単な例です:

index.go

index.go

copy
12345678
package main import "fmt" func main() { if (false) { fmt.Println("Print if True") } }

上記のコードでは、条件がデフォルトで Print となっているため、false 文は実行されません。しかし、式にNOT演算子を含めると、その値が反転し、true と同等になります。

index.go

index.go

copy
12345678
package main import "fmt" func main() { if (!false) { fmt.Println("Print if True") } }

NOT(!)演算子は、より複雑なケースでも使用可能。否定する前に、式を括弧で囲む必要あり。例えば、3 > 4 を否定したい場合は、!(3 > 4) と記述。

index.go

index.go

copy
12345678
package main import "fmt" func main() { if (!(3 > 4)) { fmt.Println("Print if True") } }

OR(||)演算子は、2つのオペランドを評価し、少なくとも1つが true の場合に true を返す。

注意

オペランドとは、文や式内で演算子の入力として使用される値または式。例えば、式 1 + 2 では、値 12 がオペランド。論理演算子の場合、オペランドは常にブール式または値。

論理演算子の基本的な使い方を示す例:

index.go

index.go

copy
1234567
package main import "fmt" func main() { fmt.Println(true || false) fmt.Println(false || false) }

最初の文は、式 true のオペランドのいずれかが true || false であるため、true を出力します。一方、2番目の文は両方のオペランドが false であるため、false を出力します。以下は論理和(OR)演算の真理値表です。

注意

真理値表は、すべての入力の組み合わせとそれに対応する出力値を示す論理的な表現です。

InputOutput
true || truetrue
true || falsetrue
false || truetrue
false || falsefalse

論理和演算子を連結して複数のオペランドを組み合わせることができます。この場合、式は左から右へ評価されます。

index.go

index.go

copy
123456
package main import "fmt" func main() { fmt.Println(false || false || true || false) }

上記の式の評価順序は次のとおりです。

注意

すべての論理式はデフォルトで左から右へ評価されます。

論理積(&&)演算子は論理和(||)演算子と似ていますが、両方のオペランドがtrueの場合のみtrueを返します。論理積(&&)演算の真理値表は以下のとおりです。

InputOutput
true && truetrue
true && falsefalse
false && truefalse
false && falsefalse

論理演算子の実用的な使用例を示す、より複雑な例を以下に示します。コードを確認し、その動作を理解してください。

index.go

index.go

copy
1234567891011
package main import "fmt" func main() { var x int = 99 if (1 <= x && x <= 10 || 90 <= x && x <= 100) { fmt.Printf("The value %d is in the range 1-10 or 90-100", x) } else { fmt.Printf("The value %d is not in the range 1-10 or 90-100", x) } }

上記の例では、複数の演算子と値を使用して、より複雑な条件を作成している点に注意してください。実行時には、式は演算子の優先順位に基づいて評価されます。優先順位の高い演算子が先に評価されるため、処理される順序を理解することが重要です。比較演算子は論理演算子よりも高い優先順位を持ちます。

以下は、論理演算子の優先順位を示す図です。

次の図は、式 1 <= x && x <= 10 || 90 <= x && x <= 100 がどのように評価されるかを示しています。

question mark

次のうち、widthheight に基づいて図形が正方形かどうかを if 文で判定するために使用できる式はどれですか?

すべての正しい答えを選択

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 3.  4

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 3.  4
some-alt