第4章 基本文法

Go言語には様々な演算子があり、これらは数値の計算、論理演算、比較などに使用されます。以下に、Go言語の主な演算子の種類と具体的な使用例を示します。


算術演算子

これらは数値の加算、減算、乗算、除算などに使用されます。

a := 10
b := 3

fmt.Println(a + b)  // 加算: 13
fmt.Println(a - b)  // 減算: 7
fmt.Println(a * b)  // 乗算: 30
fmt.Println(a / b)  // 除算: 3
fmt.Println(a % b)  // 剰余: 1


代入演算子

これらは代入と他の操作を組み合わせます。

a := 10
a += 5 // 加算代入 a = a + 5
fmt.Println(a) // 出力: 15
a -= 3 // 減算代入 a = a - 3
fmt.Println(a) // 出力: 7
a *= 2 // 乗算代入 a = a * 2
fmt.Println(a) // 出力: 20
a *= 5 // 除算代入 a = a / 5
fmt.Println(a) // 出力: 2
a %= 3 // 剰余代入 a = a % 3
fmt.Println(a) // 出力: 1


比較演算子

これらは値の比較に使用され、ブール値(trueまたはfalse)を返します。

x := 5
y := 10

fmt.Println(x == y)   // false
fmt.Println(x != y)   // true
fmt.Println(x > y)    // false
fmt.Println(x < y)    // true
fmt.Println(x >= 5)   // true
fmt.Println(y <= 10)  // true


論理演算子

これらはブール値の論理的な演算に使用されます。

a := true
b := false

fmt.Println(a && b)   // false
fmt.Println(a || b)   // true
fmt.Println(!a)       // false


ビット演算子

これらは整数のビット単位の演算に使用されます。

x := 6  // 0110 in binary
y := 10 // 1010 in binary

fmt.Println(x & y)  // 2 (0010)
fmt.Println(x | y)  // 14 (1110)
fmt.Println(x ^ y)  // 12 (1100)
fmt.Println(x << 1) // 12 (1100)
fmt.Println(y >> 1) // 5  (0101)


インクリメントとデクリメント演算子

a := 10
a++ // a = a + 1
fmt.Println(a) // 出力: 11

b := 10
b-- // b = b - 1
fmt.Println(b) // 出力: 9


アドレス演算子

x := 20
p := &x // pはxのアドレス
fmt.Println(*p) // pの指すアドレスの値(20)

*p = 25 // pの指すアドレスに新しい値を代入
fmt.Println(x) // xの値は25に更新される


チャネル演算子

ch := make(chan int)

// チャネルへの送信
go func() {
    ch <- 123
}()

// チャネルからの受信
val := <-ch
fmt.Println(val) // 出力: 123


短絡評価

a, b := true, false
if a && b {
    fmt.Println("この行は実行されない")
}
if a || b {
    fmt.Println("この行は実行される")
}


練習問題1.

2つの整数abが与えられたとき、以下の計算を行うGoプログラムを書いてください。

  1. abの和
  2. aからbを引いた差
  3. abの積
  4. abで割った商
  5. abで割った余り
a := 15
b := 4
// ここにコードを書く


練習問題2.

整数xが与えられたとき、xが10以上かつ20以下であるかどうかを判定するGoプログラムを書いてください。結果はブール値(trueまたはfalse)で表示します。

x := 15
// ここにコードを書く


練習問題3.

整数aが与えられたとき、以下のビット演算を行うGoプログラムを書いてください。

  1. aのビットを左に2ビットシフトする
  2. aのビットを右に1ビットシフトする
  3. abのビットごとのAND演算
  4. abのビットごとのOR演算
  5. abのビットごとのXOR演算
a := 12 // 1100 in binary
b := 5  // 0101 in binary
// ここにコードを書く