ブール型(Boolean型)
ブール型はTrue「真」またはFalse「偽」のうちどちらか一つを持つ値の形で文字列ではありません。よって("")ダブルクォーテーションなどの引用符は必要ありません。GO言語でブール型の値を宣言してみます。
package main
import "fmt"
func main() {
a := 10
b := 1
var num_bool bool = a > b
fmt.Println(num_bool)
fmt.Println(reflect.TypeOf(num_bool))
}
実行結果
true
不等号を逆にしてみます。
package main
import "fmt"
func main() {
a := 10
b := 1
var num_bool bool = a < b
fmt.Println(num_bool)
fmt.Println(reflect.TypeOf(num_bool))
}
実行結果
false
変数aにtrueを代入しPrintf関数でブール値を表す「%t」を使用して出力。次に変数bにfalseを代入して出力部分にa == bを表示させます。「==」は等価比較演算子の一つで、左の値(a)と右の値(b)が等しければブール値がtrue、そうでなければfalseになります。対して、「!=」は左の値(a)と右の値(b)が等しくない場合にブール値がtrueになります。変数cに3を代入、変数dに7を代入して両者のブール値を出力してみます。
package main
import "fmt"
func main() {
a := true
fmt.Printf("aの値は%t\n", a)
b := false
fmt.Printf("a==bの値は%t\n", a == b)
c := 3
d := 7
fmt.Printf("c!=dの値は%t\n", c != d)
}
実行結果
aの値はtrue
a==bの値はfalse
c!=dの値はtrue
演算子
さて、ここで演算子について見て行きましょう。演算子とは、足し算や引き算などの四則演算や2つの値の大小を比較する時に使用する記号のことです。それぞれの効果(説明)と記号をグラフにしてみました。
| 算術演算子 | 代入演算子 | 等価比較演算子 | 論理演算子 |
|---|---|---|---|
| 加算(かざん)[足し算] | 代入 | 値が等しければtrue | ANDを返す |
| + | = | == | & |
| 減算(げんざん)[引き算] | 加算して代入 | 値が等しくなければtrue | ORを返す |
| - | += | != | | |
| 乗算(じょうざん)[掛け算] | 減算して代入 | 値が大きければtrue | XORを返す |
| * | -= | > | ^ |
| 除算(じょざん)[割り算] | 乗算して代入 | 値が小さければtrue | 指定論理を抽出して代入 |
| / | *= | < | (&,|,^)= |
| 剰余(じょうよ)[余り] | 除算して代入 | 値が同じか大きければtrue | 論理積(且つ)条件が両方成立すればtrue[AND] |
| % | /= | >= | && |
| 累乗(るいじょう)[べき乗] | 剰余して代入 | 値が同じか小さければtrue | 論理和(または)どちらかの条件が成立すればtrue[OR] |
| ** | %= | <= | || |
| 文字列結合 | 累乗して代入 | 値が厳密に等しければtrue | その他、ヒア演算子。指定キーワードまでの文字列を代入 |
| . | **= | === | << |
| 文字列として結合 | 値が厳密に等しくなければtrue | インクリメント演算子 | |
| .= | !== | ++ | |
| 文字列として等しければtrue | デクリメント演算子 | ||
| eq | -- | ||
| 文字列として等しくなければtrue | 連結演算子(文字列が絡むと連結する) | ||
| ne | + | ||
| 文字コードが大きければtrue | 符号反転演算子 | ||
| lt | x = x *(ー1);←この前にあるマイナスのこと | ||
| 文字コードが小さければtrue | |||
| gt | |||
| 文字コードが同じか大きければtrue | |||
| le | |||
| 文字コードが同じか小さければtrue | |||
| ge | |||
| 指定文字列があればtrue(正規表現) | |||
| =~ | |||
| 指定文字列が無ければtrue(正規表現) | |||
| !~ | |||
| 否定(真のときは偽、偽のときは真) | |||
| ! | |||
| 大きければ-1、等しければ0、小さければ1 | |||
| cmp | |||
| 値が大きければ-1、値が等しければ0、値が小さければ1 | |||
| <=> |
上記のbooleans2.goに式を追加で記述し、ファイルを再度ビルドして実行してみます。
package main
import "fmt"
func main() {
a := true
fmt.Printf("aの値は%t\n", a)
b := false
fmt.Printf("a==bの値は%t\n", a == b)
c := 3
d := 7
fmt.Printf("c!=dの値は%t\n", c != d)
fmt.Printf("c<dの値は%t\n", c < d)
fmt.Printf("(-c)<(-d)の値は%t\n", -1*c < -1*d)
e := 2 < c && c < 4
fmt.Printf("eの値は%t\n", e)
f := d < 7 || d == 7
fmt.Printf("fの値は%t\n", f)
g := (c*d != 21)
fmt.Printf("gの値は%t\n", g)
}
ファイルをビルドして実行
aの値はtrue
a==bの値はfalse
c!=dの値はtrue
c<dの値はtrue
(-c)<(-d)の値はfalse
eの値はtrue
fの値はtrue
gの値はfalse
c < dは式「3<7」に等価となるため値はtrueになります。-1*c < -1*dはそれぞれ-1を乗じていますので「ー3と−7」になり大小関係が逆転し値はfalseになります。2 < c && c < 4は変数cに代入されている値が2より大きく、且つ4より小さければtrueになる式の値を変数eに代入して出力させた結果です。d < 7 || d == 7は変数dに代入されている値が7より小さいか、または7に等しければtrueになる式の値を変数fに代入して出力させた結果です。(c*d != 21)は変数cの値とdの値を乗じた結果が21でなければtrueになる式の値を変数gに代入して出力させた結果です。答えは21なのでfalseが出力されました。