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