演算子
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 | || |