0
0

More than 3 years have passed since last update.

プログラミング超入門(5)〜GO言語〜

Last updated at Posted at 2021-03-13

ブール型(Boolean型)

ブール型はTrue「真」またはFalse「偽」のうちどちらか一つを持つ値の形で文字列ではありません。よって("")ダブルクォーテーションなどの引用符は必要ありません。GO言語でブール型の値を宣言してみます。

booleans.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

不等号を逆にしてみます。

booleans.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))
}

実行結果

false

変数aにtrueを代入しPrintf関数でブール値を表す「%t」を使用して出力。次に変数bにfalseを代入して出力部分にa == bを表示させます。「==」等価比較演算子の一つで、左の値(a)と右の値(b)が等しければブール値がtrue、そうでなければfalseになります。対して、「!=」は左の値(a)と右の値(b)が等しくない場合にブール値がtrueになります。変数cに3を代入、変数dに7を代入して両者のブール値を出力してみます。

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)
}

実行結果

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に式を追加で記述し、ファイルを再度ビルドして実行してみます。

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が出力されました。

←前回の記事 次の記事へ→

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0