Go-オペレーター

演算子は、特定の数学的または論理的操作を実行するようにコンパイラーに指示する記号です。Go言語は組み込みの演算子が豊富で、次のタイプの演算子を提供します-

  • 算術演算子
  • 関係演算子
  • 論理演算子
  • ビット演算子
  • 代入演算子
  • その他の演算子

このチュートリアルでは、算術、リレーショナル、論理、ビット単位、代入、およびその他の演算子を1つずつ説明します。

算術演算子

次の表は、Go言語でサポートされているすべての算術演算子を示しています。変数を想定A 10と変数を保持します B 20を保持します-

例を表示

オペレーター 説明
+ 2つのオペランドを追加します A + Bは30を与えます
- 最初のオペランドから2番目のオペランドを減算します A-Bは-10を与えます
* 両方のオペランドを乗算します A * Bは200を与えます
/ 分子を分母で割ります。 B / Aは2を与える
モジュラス演算子; 整数除算後の余りを与えます。 B%Aは0を与える
++ インクリメント演算子。整数値が1つ増えます。 A ++は11を与えます
- デクリメント演算子。整数値を1つ減らします。 A--は9を与えます

関係演算子

次の表に、Go言語でサポートされているすべての関係演算子を示します。変数を想定A 10と変数を保持します B 20を保持し、次に−

例を表示

オペレーター 説明
== 2つのオペランドの値が等しいかどうかをチェックします。はいの場合、条件は真になります。 (A == B)は真ではありません。
!= 2つのオペランドの値が等しいかどうかをチェックします。値が等しくない場合、条件は真になります。 (A!= B)は真です。
>> 左のオペランドの値が右のオペランドの値より大きいかどうかをチェックします。はいの場合、条件は真になります。 (A> B)は正しくありません。
< 左のオペランドの値が右のオペランドの値よりも小さいかどうかをチェックします。はいの場合、条件は真になります。 (A <B)は真です。
> = 左のオペランドの値が右のオペランドの値以上であるかどうかをチェックします。はいの場合、条件は真になります。 (A> = B)は正しくありません。
<= 左のオペランドの値が右のオペランドの値以下であるかどうかをチェックします。はいの場合、条件は真になります。 (A <= B)は真です。

論理演算子

次の表に、Go言語でサポートされているすべての論理演算子を示します。変数を想定A 1と変数を保持します B 0を保持し、次に−

例を表示

オペレーター 説明
&& 論理AND演算子と呼ばれます。両方のオペランドがゼロ以外の場合、条件は真になります。 (A && B)は誤りです。
|| 論理OR演算子と呼ばれます。2つのオペランドのいずれかがゼロ以外の場合、条件は真になります。 (A || B)は真です。
論理NOT演算子と呼ばれます。オペランドの論理状態を逆にするために使用します。条件がtrueの場合、LogicalNOT演算子はfalseになります。 !(A && B)は真です。

次の表は、Go言語でサポートされているすべての論理演算子を示しています。変数を想定A 真で可変である B falseを保持し、その後−

オペレーター 説明
&& 論理AND演算子と呼ばれます。両方のオペランドがfalseの場合、条件はfalseになります。 (A && B)は誤りです。
|| 論理OR演算子と呼ばれます。2つのオペランドのいずれかが真の場合、条件は真になります。 (A || B)は真です。
論理NOT演算子と呼ばれます。オペランドの論理状態を逆にするために使用します。条件がtrueの場合、LogicalNOT演算子はそれをfalseにします。 !(A && B)は真です。

ビット演算子

ビット単位の演算子はビットを処理し、ビットごとの演算を実行します。&、|、^の真理値表は次のとおりです-

p q p&q p | 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

〜A = 1100 0011

C言語でサポートされているビット演算子を次の表に示します。変数Aが60を保持し、変数Bが13を保持すると仮定すると、-

例を表示

オペレーター 説明
バイナリAND演算子は、両方のオペランドに存在する場合、結果にビットをコピーします。 (A&B)は12、つまり00001100を与えます
| バイナリOR演算子は、いずれかのオペランドに存在する場合、ビットをコピーします。 (A | B)は61を与えます。これは00111101です。
^ バイナリXOR演算子は、ビットが両方ではなく一方のオペランドに設定されている場合、そのビットをコピーします。 (A ^ B)は49を返します。これは00110001です。
<< バイナリ左シフト演算子。左のオペランドの値は、右のオペランドで指定されたビット数だけ左に移動します。 << 2は、11110000である240を与えます
>> バイナリ右シフト演算子。左のオペランドの値は、右のオペランドで指定されたビット数だけ右に移動します。 >> 2は、00001111である15を与えます

代入演算子

次の表に、Go言語でサポートされているすべての代入演算子を示します-

例を表示

オペレーター 説明
= 単純な代入演算子、右側のオペランドから左側のオペランドに値を代入します C = A + Bは、A + Bの値をCに割り当てます
+ = AND代入演算子を追加します。これは、右のオペランドを左のオペランドに追加し、結果を左のオペランドに割り当てます。 C + = AはC = C + Aと同等です
-= AND代入演算子を減算します。左オペランドから右オペランドを減算し、その結果を左オペランドに代入します。 C- = AはC = C-Aと同等です
* = 乗算AND代入演算子。右のオペランドと左のオペランドを乗算し、その結果を左のオペランドに代入します。 C * = AはC = C * Aと同等です
/ = AND代入演算子を除算します。左オペランドを右オペランドで除算し、結果を左オペランドに代入します。 C / = AはC = C / Aと同等です
%= モジュラスAND代入演算子。2つのオペランドを使用してモジュラスを取り、その結果を左側のオペランドに割り当てます。 C%= AはC = C%Aと同等です
<< = 左シフトAND代入演算子 C << = 2はC = C << 2と同じです
>> = 右シフトAND代入演算子 C >> = 2はC = C >> 2と同じです
&= ビットごとのAND代入演算子 C&= 2はC = C&2と同じです
^ = ビット単位の排他的論理和と代入演算子 C ^ = 2はC = C ^ 2と同じです
| = ビット単位の包括的ORおよび代入演算子 C | = 2はC = C |と同じです 2

その他の演算子

Go言語でサポートされている他のいくつかの重要な演算子があります。 sizeof そして ?:.

例を表示

オペレーター 説明
変数のアドレスを返します。 &a; 変数の実際のアドレスを提供します。
* 変数へのポインター。 * a; 変数へのポインタを提供します。

Goでのオペレーターの優先順位

演算子の優先順位は、式内の用語のグループ化を決定します。これは、式の評価方法に影響します。特定の演算子は他の演算子よりも優先されます。たとえば、乗算演算子は加算演算子よりも優先されます。

たとえば、x = 7 + 3 * 2; ここでは、演算子*の優先順位が+よりも高いため、xには20ではなく13が割り当てられます。したがって、最初に3 * 2が乗算され、次に7に加算されます。

ここでは、優先順位が最も高い演算子がテーブルの上部に表示され、優先順位が最も低い演算子が下部に表示されます。式内では、優先順位の高い演算子が最初に評価されます。

例を表示

カテゴリー オペレーター 結合性
Postfix ()[]->。++ ---- 左から右へ
単項 +-!〜++ ---(タイプ)*&sizeof 右から左へ
乗法 * /% 左から右へ
添加剤 +- 左から右へ
シフト << >> 左から右へ
関連した << = >> = 左から右へ
平等 ==!= 左から右へ
ビットごとのAND 左から右へ
ビット単位のXOR ^ 左から右へ
ビットごとのOR | 左から右へ
論理積 && 左から右へ
論理OR || 左から右へ
割り当て = + =-= * = / =%= >> = << =&= ^ = | = 右から左へ
コンマ 左から右へ