ホーム プログラミング言語 golang go syntax Go言語 bool型(ブール型)

Go言語 bool型(ブール型)


 
 
ブール型には true または false の 2 つの値しかありません。 if ステートメントと for ステートメントの条件部分はブール値であり、 ==<などの比較演算もブール値を生成します。

 

単項演算子!論理 NOT 演算に対応するため、 !trueの値は false となり、より複雑な書き方は(!true==false) ==trueになります。実際の開発では、比較的簡潔な記述を心がける必要があります。 Let x がx==trueであることを意味するなどのブール式。

 var aVar = 10
aVar == 5  // false
aVar == 10 // true
aVar != 5  // true
aVar != 10 // false 

Go 言語では値間の比較に非常に厳しい制限があり、比較できるのは同じ型の 2 つの値のみです。値の型がインターフェイスの場合は、同じインターフェイスも実装する必要があります。いずれかの値が定数の場合、もう一方の値は定数でなくてもかまいませんが、型は定数の型と同じである必要があります。上記の条件がいずれも満たされない場合は、比較を行う前に、値の 1 つを他の値と同じ型に変換する必要があります。

ブール値は && (AND) および || (OR) 演算子と組み合わせることができ、短絡動作が行われます。演算子の左側の値がすでにブール式全体の値を決定できる場合、その値は演算子の右側の値は評価されなくなるため、次の式は常に安全です。

 s != "" && s[0] == 'x' 

このうち、s[0]演算を空文字列に適用するとパニック例外が発生します。

&& ||より優先順位が高いため (&& は論理乗算に対応し、|| は論理加算に対応し、乗算は加算よりも優先されます)、次のブール式は省略できます。

if'a' <= c && c <= 'z' ||
    'A' <= c && c <= 'Z' ||
    '0' <= c && c <= '9' {
    // ...ASCIIのアルファベットや数字...
} 

ブール値は数値 0 または 1 に暗黙的に変換されず、その逆も同様で、if ステートメントを使用して明示的に変換する必要があります。

 i := 0
if b {
    i = 1
} 

同様の変換を頻繁に行う必要がある場合は、以下に示すように、変換コードを関数にカプセル化できます。

 // もしbがTrueなら、btoiは1を返す。Falseなら、0を返す
func btoi(b bool) int {
    if b {
        return 1
    }
    return 0
} 

数値からブール値への逆変換は非常に簡単ですが、対称性を維持するために関数をラップすることもできます。

 // itob関数は、iが0でない場合にtrueを返します。
func itob(i int) bool { return i != 0 } 

Go 言語では整数をブール値にキャストすることはできません。コードは次のとおりです。

var n bool 
fmt.Println(int(n) * 2)

コンパイルエラーが発生した場合、出力は次のようになります。

cannot convert n (type bool) to type int

ブール型は数値演算に参加できず、他の型に変換することもできません。

 

「 Go言語 bool型(ブール型)」についてわかりやすく解説!絶対に観るべきベスト2動画

【Go言語 超入門コース】07.データ型 |変数に入れるデータの種類のことです【プログラミング初心者向け入門講座】
Golang for Beginners – 9 – Boolean Types