演算子
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 := 1はvar v = 1と同じ |
++ |
a++はa = a + 1と同じ |
-- |
a--はa = a - 1と同じ |
+= |
a += bはa = a + bと同じ |
-= |
a -= bはa = a - bと同じ |
*= |
a *= bはa = a * bと同じ |
/= |
a /= bはa = a / bと同じ |
%= |
a %= bはa = a % bと同じ |
&= |
a &= bはa = a & bと同じ |
|= |
a |= bはa = a | bと同じ |
^= |
a ^= bはa = a ^ bと同じ |
&^= |
a &^= bはa = a &^ bと同じ |
<<= |
a <<= bはa = a << bと同じ |
>>= |
a >>= bはa = 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 | || |