1 Golang演算子の概要

Go言語では、演算子がプログラムコードの演算、算術演算、関係比較、論理演算などを実行するために使用されます。異なる演算子は異なる機能と使用シナリオに対応しています。これらの演算子を理解し、マスターすることは効果的なプログラミングの基盤です。

2 算術演算子

Go言語では、一連の算術演算子が提供されています:

  • 加算 (+): 加算演算
  • 減算 (-): 減算演算
  • 乗算 (*): 乗算演算
  • 除算 (/): 除算演算
  • 余り (%): モジュロ演算

例:

package main

import "fmt"

func main() {
    // 加算演算
    sum := 10 + 5
    fmt.Println("10 + 5 =", sum) // 出力 15

    // 減算演算
    diff := 10 - 5
    fmt.Println("10 - 5 =", diff) // 出力 5

    // 乗算演算
    prod := 10 * 5
    fmt.Println("10 * 5 =", prod) // 出力 50

    // 除算演算
    quot := 10 / 5
    fmt.Println("10 / 5 =", quot) // 出力 2

    // モジュロ演算
    rem := 10 % 5
    fmt.Println("10 % 5 =", rem) // 出力 0
}

3 論理演算子

Go言語の論理演算子は、複数の条件を接続するために使用されます(一般的にはブール値に使用されます)。これにはAND(&&)、OR(||)、NOT(!)の3種類があります。

3.1 AND(&&)

すべての条件が真の場合、「AND」演算の結果は真となります。

例:

package main

import "fmt"

func main() {
    fmt.Println(true && true)   // 出力 真
    fmt.Println(true && false)  // 出力 偽
    fmt.Println(false && false) // 出力 偽
    // 両方の条件が真の場合、結果は真となります
}

3.2 OR(||)

少なくとも1つの条件が真の場合、「OR」演算の結果は真となります。

例:

package main

import "fmt"

func main() {
    fmt.Println(true || true)   // 出力 真
    fmt.Println(true || false)  // 出力 真
    fmt.Println(false || false) // 出力 偽
    // 少なくとも1つの条件が真の場合、結果は真となります
}

3.3 NOT(!)

条件のブール値を反転させるために使用されます。

例:

package main

import "fmt"

func main() {
    fmt.Println(!true)  // 出力 偽
    fmt.Println(!false) // 出力 真
    // ブール値を反転させます
}

4 比較演算子

Go言語の比較演算子は、2つの変数または値を比較するために使用されます:

  • 等しい (==)
  • 等しくない (!=)
  • 大きい (>)
  • 小さい (<)
  • 以上 (>=)
  • 以下 (<=)

比較演算の結果はブール値: true または false となります。

5 ビット演算子

Go言語では、ビット演算子を使用してデータのバイナリビットを直接操作できます:

  • ビット AND (&)
  • ビット OR (|)
  • ビット XOR (^)
  • ビット左シフト (<<)
  • ビット右シフト (>>)

ビット演算子は主に低レベルのプログラミング、直接のハードウェア操作、暗号化などのシナリオで使用されます。

6 代入演算子

代入演算子は変数に値を代入するために使用されます。Go言語では、複数の形式の代入演算子が存在します:

  • 単純代入 (=)
  • 加算代入 (+=)
  • 減算代入 (-=)
  • 乗算代入 (*=)
  • 除算代入 (/=)
  • 剰余代入 (%=)

これらの演算子はコードをより簡潔にします。例えば、x += 1x = x + 1 と同等です。

7 特殊演算子

7.1 インクリメント(++)およびデクリメント(--)演算子

インクリメント演算子(++)およびデクリメント演算子(--)は、それぞれ変数の値に1を加えたり減らしたりするために使用されます。これらは、式ではなく変数自体に直接作用できるGo言語で唯一の演算子です。

package main

import "fmt"

func main() {
    x := 1
    x++
    fmt.Println("x++ =", x) // 出力は2です

    y := 10
    y--
    fmt.Println("y-- =", y) // 出力は9です
}

Go言語では、x++x--が式の一部になることはできません。例えば、z := x++は許可されていません。

7.2 型変換

Go言語は静的型付き言語です。つまり、変数が宣言されると、その型を変更することはできません。そのため、時には1つの型から別の型への変換が必要になります。Go言語には自動型変換はありません。明示的な型変換が必要です。

Example:

package main

import (
	"fmt"
)

func main() {
	var i int = 42
	fmt.Println(float64(i)) // intをfloat64に変換

	var f float64 = 3.14
	fmt.Println(int(f)) // float64をintに変換、小数点以下は切り捨てられます
}

型変換を行う際には、浮動小数点数を整数に変換する際の精度の損失など、データが変換プロセス中に安全であることを確認することが重要です。