Go 言語入門基礎学習ノートの Go 言語の演算子
演算子#
Go 言語に組み込まれている演算子は:
- 算術演算子
- 関係演算子
- 論理演算子
- ビット演算子
- 代入演算子
- その他の演算子
算術演算子#
A = 10, B = 20
の場合
演算子 | 説明 | 例 |
---|---|---|
+ | 加算 | A + B の出力結果 30 |
- | 減算 | A - B の出力結果 -10 |
* | 乗算 | A * B の出力結果 200 |
/ | 除算 | B / A の出力結果 2 |
% | 剰余 | B % A の出力結果 0 |
++ | 自増 | A++ の出力結果 11 |
-- | 自減 | A-- の出力結果 9 |
関係演算子#
A = 10, B = 20
の場合
演算子 | 説明 | 例 |
---|---|---|
== | 2 つの値が等しいかを確認し、等しい場合は True、そうでなければ False を返す。 | (A == B) は False |
!= | 2 つの値が等しくないかを確認し、等しくない場合は True、そうでなければ False を返す。 | (A != B) は True |
> | 左側の値が右側の値より大きいかを確認し、大きい場合は True、そうでなければ False を返す。 | (A > B) は False |
< | 左側の値が右側の値より小さいかを確認し、小さい場合は True、そうでなければ False を返す。 | (A < B) は True |
>= | 左側の値が右側の値以上かを確認し、以上の場合は True、そうでなければ False を返す。 | (A >= B) は False |
<= | 左側の値が右側の値以下かを確認し、以下の場合は True、そうでなければ False を返す。 | (A <= B) は True |
論理演算子#
A = True, B = False
の場合
演算子 | 説明 | 例 |
---|---|---|
&& | 論理 AND 演算子。両側のオペランドが True であれば条件は True、そうでなければ False。 | (A && B) は False |
|| | 論理 OR 演算子。両側のオペランドのいずれかが True であれば条件は True、そうでなければ False。 | (A | B) は True |
! | 論理 NOT 演算子。条件が True であれば論理 NOT 条件は False、そうでなければ True。 | !(A && B) は True |
ビット演算子#
ビット演算子は整数のバイナリビットに対して操作を行います。
$p$ | $q$ | $p$ & $q$ | $p\ {\mid}\ q$ | $p$ ^ $q$ |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
A = 60; B = 13
と仮定し、十進数を二進数に変換してビット演算を行います。
A = 0011 1100
B = 0000 1101
-----------------
A & B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
Go 言語がサポートするビット演算子は以下の表の通りです。A
が 60、B
が 13 と仮定します。
演算子 | 説明 | 例 |
---|---|---|
& | ビット AND 演算子 & は二項演算子です。演算に参加する 2 つの数の対応するビットを AND します。 | (A & B) の結果は 12, 二進数は 0000 1100 |
| | ビット OR 演算子| は二項演算子です。演算に参加する 2 つの数の対応するビットを OR します。 | (A | B) の結果は 61, 二進数は 0011 1101 |
^ | ビット XOR 演算子 ^ は二項演算子です。演算に参加する 2 つの数の対応するビットが異なる場合、結果は 1 になります。 | (A ^ B) の結果は 49, 二進数は 0011 0001 |
<< | 左シフト演算子 << は二項演算子です。n ビット左シフトは 2 の n 乗を掛けることを意味します。<< の左側の数の各ビットを指定されたビット数だけ左にシフトし、高位は破棄され、低位は 0 で埋められます。 | A << 2 の結果は 240 ,二進数は 1111 0000 |
>> | 右シフト演算子 >> は二項演算子です。n ビット右シフトは 2 の n 乗で割ることを意味します。>> の左側の数の各ビットを指定されたビット数だけ右にシフトします。 | A >> 2 の結果は 15 ,二進数は 0000 1111 |
代入演算子#
演算子 | 説明 | 例 |
---|---|---|
= | 単純な代入演算子、式の値を左辺に代入します | C = A + B は A + B の結果を C に代入 |
+= | 加算後に代入 | C += A は C = C + A と等しい |
-= | 減算後に代入 | C -= A は C = C - A と等しい |
*= | 乗算後に代入 | C *= A は C = C * A と等しい |
/= | 除算後に代入 | C /= A は C = C / A と等しい |
%= | 剰余後に代入 | C %= A は C = C % A と等しい |
<<= | 左シフト後に代入 | C <<= 2 は C = C << 2 と等しい |
>>= | 右シフト後に代入 | C >>= 2 は C = C >> 2 と等しい |
&= | ビット AND 後に代入 | C &= 2 は C = C & 2 と等しい |
^= | ビット XOR 後に代入 | C ^= 2 は C = C ^ 2 と等しい |
|= | ビット OR 後に代入 | C |= 2 は C = C | 2 と等しい |
=
は複数の変数に同時に代入できます。例えばc, d = b, a
のように、b を c に、a を d に代入します。
その他の演算子#
演算子 | 説明 | 例 |
---|---|---|
& | 変数の格納アドレスを返す | &a は変数の実際のアドレスを返します。 |
* | ポインタ変数。 | *a はポインタ変数 |
演算子の優先順位#
一部の演算子は高い優先順位を持ち、二項演算子の演算方向は左から右です。以下の表はすべての演算子とその優先順位を示しており、上から下は優先順位が高いから低いことを示します。
優先順位 | 演算子 |
---|---|
5 | * / % << >> & &^ |
4 | + - | ^ |
3 | == != < <= > >= |
2 | && |
1 | || |
括弧
()
を使用することで、特定の式の全体の演算優先順位を一時的に上げることができます。