ここでは数値型に続いて、Go言語の基本型の1つである論理値型(Boolean types)についてみていきます。
論理値型
論理値型(Boolean types)は、true、falseという値をとるデータ型です。
型名はboolをとります。
次のコードで確認してみます。
package main
import "fmt"
var x bool
func main() {
t := true
f := false
fmt.Println(x)
x = true
fmt.Println(x)
fmt.Printf("%T %v\n", t, t)
fmt.Printf("%T %v\n", f, f)
}
関数の外でvarで論理型をxで宣言しています。関数の中では省略宣言で初期化しました。
実行結果を見てみましょう。
false
true
bool true
bool false
xは最初の宣言で値を入れていません。値が入っていないものを出力するとfalseになるということがわかると思います。
論理演算子
Goの論理演算子をみていきましょう。Goの論理演算子は「AND」を「&&」で、「OR」を「||」を利用します。
package main
import "fmt"
func main() {
fmt.Println(true && true)
fmt.Println(true && false)
fmt.Println(false && true)
fmt.Println(false && false)
fmt.Println(true || true)
fmt.Println(true || false)
fmt.Println(false || true)
fmt.Println(false || false)
fmt.Println(!true)
fmt.Println(!false)
}
&&、||の結果は論理学の真理値表を対応させて理解すればいいでしょう。否定に「!」を使うことで結果が反転します。
出力の結果は以下のとおりです。
true
false
false
false
true
true
true
false
false
true
以下に、 「AND」「OR」の真理値表をそれぞれまとめておきます。
比較演算子
比較演算子は、演算子の左右の値を比較してtrueかfalseの論理値で評価される演算子です。
以下の6つの演算子で評価できます。
- ==
- <=
- >=
- !=
- <
- >
具体的には、次のような形で確認できます。
package main
import "fmt"
func main() {
a := 10
b := 13
fmt.Println(a == b)
fmt.Println(a <= b)
fmt.Println(a >= b)
fmt.Println(a != b)
fmt.Println(a < b)
fmt.Println(a > b)
}
aの値とbの値を比較してみました。
結果は以下のように確認できます。
false
true
false
true
true
false
これも、他の言語と変わりありませんね。
Pythonコードで書いてみると…
Pythonの論理演算はどうか確認しておきましょう。
Goの「&&」「||」は,Pythonでは、「and」「or」を使います。
以下にまとめています。
実際に、ここで行ったGoのコードを書き換えてみます。
True、Falseと大文字で始まるという違いもあります。
def main():
t, f = True, False
print(type(t), t)
print(type(f), f)
if __name__ == "__main__":
main()
PythonにはFalseとみなせる値はありますが、Goのようなゼロ値のデフォルトで初期化されないので、その部分はここでは書いていません。
結果は以下の通り。
<class 'bool'> True
<class 'bool'> False
論理演算子の計算もやってみましょう。
Go言語の否定の「!」はPythonでは「not」を使います。
def main():
print(True and True)
print(True and False)
print(False and True)
print(False and False)
print(True or True)
print(True or False)
print(False or True)
print(False or False)
print(not True)
print(not False)
if __name__ == "__main__":
main()
結果は以下のとおり。
True
False
False
False
True
True
True
False
False
True
論理演算の結果自体は、どの言語も同じロジックになるので特に新しい知識を憶えないといけないということではないですね。
比較演算子も同様にやっておきましょう。
def main():
a = 10
b = 13
print(a == b)
print(a <= b)
print(a >= b)
print(a != b)
print(a < b)
print(a > b)
if __name__ == "__main__":
main()
当然、同様の結果になります。
False
True
False
True
True
False
最後に
Go言語の論理値型(Boolean types)について扱いました。true、falseをとるデータ型です。
Goでは値を入れずにbool型で初期化した場合は、ゼロ値をとってfalseと判定されます。
Goの論理演算子は「AND」を「&&」、「OR」を「||」、「NOT」を「!」で表します。
比較演算子は、==、>=、<=、!=、>、< で左右の値を評価します。