演算子

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