演算子

Goが定義する演算子をまとめました。

算術演算子

算術演算子の一覧です。

名前 演算子
足し算 + 1 + 2 // 3
引き算 - 3 - 1 // 2
掛け算 * 2 * 3 // 6
割り算 / 3 / 1 // 3
割り算の余り % 5 % 2 // 1
論理積(AND) & 0b10 & 0b11 // 0b10
論理和(OR) | 0b10 | 0b11 // 0b11
排他的論理和(XOR) ^ 0b10 ^ 0b11 // 0b01
ビットクリア(AND NOT) &^ 0b101 &^ 0b110 // 0b001
左シフト << 0b11 << 2 // 0b1100
右シフト >> 0b1100 >> 2 // 0b0011

比較演算子

比較演算子の一覧です。

演算子 説明
== 等しい 1 == 1 // true
!= 等しくない 1 != 1 // false
< 左辺が右辺より小さい 1 < 1 // false
<= 左辺が右辺以下 1 <= 1 // true
> 左辺が右辺より大きい 1 > 1 // false
>= 左辺が右辺以上 1 >= 1 // true

論理演算子

論理演算子の一覧です。

名前 演算子
論理積(AND) && a && b
論理和(OR) || a || b
否定(NOT) ! !a

代入演算子

代入演算子の一覧です。 算術結果を代入する際の省略表現もあります。

演算子 説明
= 左辺を右辺に代入する
:= v := 1var v = 1と同じ
++ a++a = a + 1と同じ
-- a--a = a - 1と同じ
+= a += ba = a + bと同じ
-= a -= ba = a - bと同じ
*= a *= ba = a * bと同じ
/= a /= ba = a / bと同じ
%= a %= ba = a % bと同じ
&= a &= ba = a & bと同じ
|= a |= ba = a | bと同じ
^= a ^= ba = a ^ bと同じ
&^= a &^= ba = a &^ bと同じ
<<= a <<= ba = a << bと同じ
>>= a >>= ba = a >> bと同じ

アドレス演算子

アドレス演算子の一覧です。

演算子 説明
& 変数のポインタを生成する
* ポインタ型を定義する。デリファレンスを行う
n := 1
var p *int      // ポインタ型を定義する
p = &n          // ポインタを生成する
fmt.Println(*p) // デリファレンスを行う

レシーブ演算子

レシーブ演算子は<-です。チャネルの受信に使用します。

ch := make(chan int)
go func() {
    ch <- 1
    ch <- 1
}()
n1 := <-ch // チャネルの受信
fmt.Println(n1)
n2, ok := <-ch // チャネルの受信。2つ目の戻り値は通信が成功したがどうかを表す
fmt.Println(n2, ok)

演算子の優先順位

演算子の優先順位は次の通りです。数値が高いほど優先されます。

優先順位 演算子
5 * / % << >> & &^
4 + - | ^
3 == != < <= > >=
2 &&
1 ||