目次
オペレーター
算術演算子
Go 言語の算術演算子には、加算、減算、乗算、除算、剰余などが含まれます。除算演算子 / と剰余演算子 % は整数型にのみ使用でき、浮動小数点型には使用できないことに注意してください。浮動小数点除算を行う場合は、型変換または浮動小数点定数を使用する必要があります。さらに、Go 言語のインクリメント演算子とデクリメント演算子は、式ではなくステートメントでのみ使用できます。
加算、減算、乗算、除算、剰余などの基本的な算術演算に使用されます。一般的に使用される算術演算子は次のとおりです。
オペレーター | 説明 |
---|---|
+ | 添加 |
- | 引き算 |
* | 乗算 |
/ | 分割 |
% | モジュロ/剰余 |
コード例:
package main
import "fmt"
func main() {
a := 10
b := 3
// 加法
fmt.Println(a + b) // 13
// 减法
fmt.Println(a - b) // 7
// 乘法
fmt.Println(a * b) // 30
// 除法
fmt.Println(a / b) // 3
// 取余
fmt.Println(a % b) // 1
}
関係演算子
Go の関係演算子には、等しい、等しくない、より大きい、より小さい、以上、および以下が含まれます。比較演算子は、整数、浮動小数点数、文字列、ポインタなどの比較可能な型に対してのみ使用できることに注意してください。ただし、構造体、配列、関数などの複雑な型では、カスタム比較関数が必要になるか、比較にリフレクション メカニズムを使用する必要があります。
オペレーター | 説明 |
---|---|
== | 2 つの値が等しいかどうかを確認します |
!= | 2 つの値が等しくないかどうかを確認します |
> | 左側の値が右側の値より大きいかどうかを確認します |
< | 左側の値が右側の値より小さいかどうかを確認します |
>= | 左側の値が右側の値以上であるかどうかを確認します |
<= | 左側の値が右側の値以下であるかどうかを確認します |
コード例:
package main
import "fmt"
func main() {
a := 10
b := 3
// 等于
fmt.Println(a == b) // false
// 不等于
fmt.Println(a != b) // true
// 大于
fmt.Println(a > b) // true
// 小于
fmt.Println(a < b) // false
// 大于等于
fmt.Println(a >= b) // true
// 小于等于
fmt.Println(a <= b) // false
}
論理演算子
Go 言語の論理演算子には、and、or、not などが含まれます。AND 演算子 && と OR 演算子 || には短絡特性があることに注意してください。つまり、式全体の値が決定できる限り計算は停止します。not 演算子 ! はブール型でのみ使用でき、整数型では使用できません。
オペレーター | 説明 |
---|---|
&& | 論理 AND 演算子。両方のオペランドが true の場合、条件は true、それ以外の場合は false |
|| | 論理和演算子。2 つのオペランドのいずれかが true の場合、条件は true、それ以外の場合は false |
! | 論理否定演算子。オペランドの論理状態を反転するために使用されます。条件が true の場合、論理 NOT 演算子によって条件が false に変わります。 |
コード例:
package main
import "fmt"
func main() {
a := true
b := false
// 逻辑与
fmt.Println(a && b) // false
// 逻辑或
fmt.Println(a || b) // true
// 逻辑非
fmt.Println(!a) // false
}
ビット演算子
Go 言語のビット演算子には、ビットごとの AND、ビットごとの OR、ビットごとの排他的論理和、ビットごとの左シフト、ビットごとの右シフトなどが含まれます。ビット演算子は整数型でのみ使用でき、浮動小数点型では使用できないことに注意してください。さらに、ビット演算子の優先順位は算術演算子や比較演算子よりも低く、優先順位を制御するには括弧が必要です。
オペレーター | 説明 |
---|---|
& | ビット単位の AND 演算子。2 つのオペランドの各ビットに対して論理 AND 演算を実行します。 |
| | ビットごとの OR 演算子。2 つのオペランドの各ビットに対して論理 OR 演算を実行します。 |
^ | ビット単位の XOR 演算子。2 つのオペランドの各ビットに対して論理 XOR 演算を実行します。 |
<< | 左シフト演算子。左オペランドのすべてのビットを指定されたビット数だけ左にシフトします。 |
>> | 右シフト演算子。左オペランドのすべてのビットを指定されたビット数だけ右にシフトします。 |
コード例:
package main
import "fmt"
func main() {
a := 60
b := 13
// 按位与
fmt.Println(a & b) // 12
// 按位或
fmt.Println(a | b) // 61
// 按位异或
fmt.Println(a ^ b) // 49
// 左移
fmt.Println(a << 2) // 240
// 右移
fmt.Println(a >> 2) // 15
}
代入演算子
Go 言語の代入演算子には、単純な代入、加算の等価、減算の等価、乗算の等価、除算の等価、モジュロの等価、AND の等価、OR の等価、XOR の等価などがあります。代入演算子は、a, b := 1, 2 のように複数の変数に対して同時に使用できることに注意してください。さらに、代入演算子の優先順位はほとんどの演算子よりも低くなりますが、論理演算子よりは高くなります。
オペレーター | 説明 |
---|---|
= | 単純な代入演算子。右側の式の値を左側の変数に代入します。 |
+= | プラスおよび等号演算子。右側の式の値を左側の変数に加算します。 |
-= | マイナスは演算子に等しい。左側の変数から右側の式の値を減算します。 |
*= | 乗算と等しい演算子。右側の式の値に左側の変数を掛けます。 |
/= | 等価除算演算子。左側の変数の値を右側の式の値で割ります。 |
%= | 演算子に等しいモジュロ。左側の変数の値を右側の式の値で剰余します。 |
コード例:
package main
import "fmt"
func main() {
a := 10
b := 3
// 简单赋值
c := a
fmt.Println(c) // 10
// 加法赋值
a += b
fmt.Println(a) // 13
// 减法赋值
a -= b
fmt.Println(a) // 10
// 乘法赋值
a *= b
fmt.Println(a) // 30
// 除法赋值
a /= b
fmt.Println(a) // 10 / 3 = 3
// 取余赋值
a %= b
fmt.Println(a) // 1
}
他の演算子
Go 言語には他にもアドレス演算子 &、ポインタ演算子 *、sizeof 演算子などの演算子がいくつかあります。アドレス取得演算子とポインター演算子はポインター型にのみ使用でき、sizeof 演算子は静的型にのみ使用できることに注意してください。