演算子


Go言語で使用可能な演算子

算術演算子

二項演算子

演算子 説明 使用例
+ 右辺と左辺を可算します。文字列の場合は結合します。 a + b
- 左辺から右辺を減算します。 a - b
* 右辺と左辺を乗算します。 a * b
/ 左辺を右辺で除算します。 a / b
% 左辺を右辺で除算した余りを計算します。 a % b
& 左辺と右辺の各ビットの論理積を計算します。 a & b
| 左辺と右辺の各ビットの論理和を計算します。 a | b
^ 左辺と右辺の各ビットの排他的論理和を計算します。 a ^ b
&^ 左辺と右辺の各ビットの論理積の否定を計算します。 a &^ b
<< 右辺の値分、左辺を算術左シフトします。 a << b
>> 右辺の値分、左辺を算術右シフトします。 a >> b

なお、上記はすべて後ろに=を付けることで計算と代入を同時に行うことができます。

var a = 3
a += 2
fmt.Println(a)   // 5
a <<= 3
fmt.Println(a)   // 40

単項演算子

演算子 説明 使用例
+ 右辺を0に足し合わせた値を得る。 +5
- 右辺を0から引いた値を得る。 -5
^ 右辺の各ビットの否定を計算する。 ^5
++ 右辺または左辺に1を加算する a++
右辺または左辺から1を減算する a–

なおC言語やJavaと同様に、++演算子および–演算子には前置・後置の二種類があります。 前置と後置の違いは他の言語と同じです。

比較演算子

演算子 説明 使用例
== 左辺と右辺が等しければtrue a == b
!= 左辺と右辺が異なればtrue a != b
< 左辺が右辺より小さければtrue a < b
<= 左辺が右辺より小さいか等しければtrue a <= b
> 左辺が右辺より大きければtrue a > b
>= 左辺が右辺より大きいか等しければtrue a >= b

論理演算子

演算子 説明 使用例
&& 左辺と右辺の論理積を得ます。 a && b
|| 左辺と右辺の論理和を得ます。 a || b
! 右辺の否定を得ます。 !a

アドレス演算子

演算子 説明 使用例
& 右辺の変数のアドレスを得ます。 &a
* 右辺の変数に格納されたアドレスを解決します。 *a

送受信演算子

他の言語には無い演算子ですが、チャネルからのデータ送受信に使用します。 チャネルへの送信は二項演算子、チャネルからの受信は単項演算子であることに注意しましょう。

演算子 説明 使用例
<- 左辺のチャネルへ右辺の値を送信する。 ch <- a
<- 右辺のチャネルから値を受信する。 a = <-ch

代入演算子

演算子 説明 使用例
= 左辺の変数へ右辺の値を代入する。 a = b
:= 左辺の変数を定義し、右辺の値で初期化する。 a := b

なお、:=演算子は左辺の変数が定義済みの場合は使用できません。

var a int
a := 5     // コンパイルエラー

二項演算子の結合順序

演算子には優先度が設定されており、数字が大きいほど先に評価されます。

優先度 該当する演算子
5
*  /  %  <<  >>  &  &^
4
+  -  |  ^
3
==  !=  <  <=  >  >=
2
&&
1
||