Go 言語演算子
Go 言語演算子
演算子は、プログラムの実行中に数学的演算または論理演算を実行するために使用されます。
Go 言語の組み込み演算子は次のとおりです:
算術演算子
関係演算子
論理演算子
ビット演算子
代入演算子
その他のオペレーター
次に、各オペレーターの紹介を詳しく見ていきましょう。
算術演算子
次の表は、Go 言語のすべての算術演算子のリストです。 A の値が 10、B の値が 20 であるとします。
演算子 | 説明 | 例 |
---|---|---|
+ | 加算 | A + B 出力結果 30 |
- | 減算 | A - B出力結果 -10 |
* | 乗算 | A * B 出力結果200 |
/ | 除算 | B / A 出力結果2 |
% | 余りを求める | B % A 出力結果0 |
++ | increment | A++ 出力結果 11 |
-- | decrease | A-- 出力結果 9 |
次の例は、各算術演算子の使用法を示しています。実行結果:
package main import "fmt" func main() { var a int = 21 var b int = 10 var c int c = a + b fmt.Printf("第一行 - c 的值为 %d\n", c ) c = a - b fmt.Printf("第二行 - c 的值为 %d\n", c ) c = a * b fmt.Printf("第三行 - c 的值为 %d\n", c ) c = a / b fmt.Printf("第四行 - c 的值为 %d\n", c ) c = a % b fmt.Printf("第五行 - c 的值为 %d\n", c ) a++ fmt.Printf("第六行 - c 的值为 %d\n", a ) a-- fmt.Printf("第七行 - c 的值为 %d\n", a ) }関係演算子
次の表は、Go 言語のすべての関係演算子のリストです。 A の値が 10、B の値が 20 であるとします。
Description | Instance | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2つの値が等しいかどうかをチェックし、等しい場合はTrueを返し、そうでない場合はFalseを返します。 | (A == B) is 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 です |
演算子 | 説明 | インスタンス |
---|---|---|
&& | 論理AND演算子。 両方のオペランドが True の場合、条件は True となり、それ以外の場合は False になります。 | (A && B) は False |
|| | 論理 OR 演算子です。 両方のオペランドが True の場合、条件は True であり、それ以外の場合は False です。 | (A || B) は True |
! | 論理 NOT 演算子です。 論理 NOT 条件 条件が True の場合は False、それ以外の場合は True。 | !(A && B) is True |
次の例は、論理演算子の使用を示しています:
第一行 - a 不等于 b 第二行 - a 不小于 b 第三行 - a 大于 b 第四行 - a 小于等于 b 第五行 - b 大于等于 b
上記の実行結果の例:
package main import "fmt" func main() { var a bool = true var b bool = false if ( a && b ) { fmt.Printf("第一行 - 条件为 true\n" ) } if ( a || b ) { fmt.Printf("第二行 - 条件为 true\n" ) } /* 修改 a 和 b 的值 */ a = false b = true if ( a && b ) { fmt.Printf("第三行 - 条件为 true\n" ) } else { fmt.Printf("第三行 - 条件为 false\n" ) } if ( !(a && b) ) { fmt.Printf("第四行 - 条件为 true\n" ) } }
ビット演算子
ビット演算子はメモリ内の整数に作用します。バイナリビットが演算されます。
次の表は、ビット演算子 &、|、および ^ の計算を示しています。 0
0 | 0 | 1 | 0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0 | 1 | 0 | 0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 |
| | ビット単位の OR 演算子「|」は二項演算子です。 その関数は、演算に含まれる 2 つの数値に対応する 2 進位相または | (A | B) です。結果は 61 で、2 進数では 0011 1101 になります | ||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
^ | ビットごとの XOR 演算子 "^" は次のようになります。二項演算記号。 その機能は、演算に含まれる 2 つの数値の対応する 2 進ビットの排他的論理和を実行することです。2 つの対応する 2 進ビットが異なる場合、結果は 1 になります。 | (A ^ B) 結果は 49 で、二進数では 0011 0001 になります | ||||||||||||||||||||||||||||||||||||||||||||||||||||
<< | 左シフト演算子「<<」は二項演算子です。 n ビットを左にシフトすると、2 の n 乗倍になります。 その機能は、「<<」の左側にあるオペランドのすべてのバイナリビットを特定のビット数だけ左にシフトすることです。「<<」の右側の数字は、そのビット数を指定します。シフトされたビットは破棄され、下位ビットは 0 で埋められます。 | A << 2 結果は 240 で、2 進数では 1111 0000 になります | ||||||||||||||||||||||||||||||||||||||||||||||||||||
右シフト演算子 ">>" は 2 項演算子です。 n ビット右にシフトすると、2 の n 乗で除算されます。 その機能は、「>>」の左側にあるオペランドのすべての 2 進数を特定の桁数だけ右にシフトすることであり、「>>」の右側の数値は桁数を指定します。移動すること。 | A >> 2 結果は 15 で、これはバイナリで 0000 1111 です | |||||||||||||||||||||||||||||||||||||||||||||||||||||
演算子 | 説明 | 例 |
---|---|---|
= | 単純な代入演算子、式の値を左辺値に代入します | C = A + B will 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 的值为 12 第二行 - c 的值为 61 第三行 - c 的值为 49 第四行 - c 的值为 240 第五行 - c 的值为 15
上記の実行結果例:
package main import "fmt" func main() { var a int = 21 var c int c = a fmt.Printf("第 1 行 - = 运算符实例,c 值为 = %d\n", c ) c += a fmt.Printf("第 2 行 - += 运算符实例,c 值为 = %d\n", c ) c -= a fmt.Printf("第 3 行 - -= 运算符实例,c 值为 = %d\n", c ) c *= a fmt.Printf("第 4 行 - *= 运算符实例,c 值为 = %d\n", c ) c /= a fmt.Printf("第 5 行 - /= 运算符实例,c 值为 = %d\n", c ) c = 200; c <<= 2 fmt.Printf("第 6行 - <<= 运算符实例,c 值为 = %d\n", c ) c >>= 2 fmt.Printf("第 7 行 - >>= 运算符实例,c 值为 = %d\n", c ) c &= 2 fmt.Printf("第 8 行 - &= 运算符实例,c 值为 = %d\n", c ) c ^= 2 fmt.Printf("第 9 行 - ^= 运算符实例,c 值为 = %d\n", c ) c |= 2 fmt.Printf("第 10 行 - |= 运算符实例,c 值为 = %d\n", c ) }その他の演算子 演算子
次の表は、Go 言語のその他の演算子のリストです。
Description | Instance | |
---|---|---|
Return 変数ストレージアドレス | &a; は変数の実際のアドレスを返します。 | |
ポインタ変数。 | *a; はポインター変数です |
第 1 行 - = 运算符实例,c 值为 = 21 第 2 行 - += 运算符实例,c 值为 = 42 第 3 行 - -= 运算符实例,c 值为 = 21 第 4 行 - *= 运算符实例,c 值为 = 441 第 5 行 - /= 运算符实例,c 值为 = 21 第 6行 - <<= 运算符实例,c 值为 = 800 第 7 行 - >>= 运算符实例,c 值为 = 200 第 8 行 - &= 运算符实例,c 值为 = 0 第 9 行 - ^= 运算符实例,c 值为 = 2 第 10 行 - |= 运算符实例,c 值为 = 2
上記の実行結果:
package main import "fmt" func main() { var a int = 4 var b int32 var c float32 var ptr *int /* 运算符实例 */ fmt.Printf("第 1 行 - a 变量类型为 = %T\n", a ); fmt.Printf("第 2 行 - b 变量类型为 = %T\n", b ); fmt.Printf("第 3 行 - c 变量类型为 = %T\n", c ); /* & 和 * 运算符实例 */ ptr = &a /* 'ptr' 包含了 'a' 变量的地址 */ fmt.Printf("a 的值为 %d\n", a); fmt.Printf("*ptr 为 %d\n", *ptr); }演算子の優先順位
一部の演算子は、演算の優先順位が高くなります。二項演算子の方向は左から右です。次の表は、すべての演算子とその優先順位を上から下に示しています。 GT ; & &^
5== != <= >= > | |
---|---|
2 | |
1 | |
上記インスタンスの実行結果: | 上記インスタンスの実行結果: |