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
示例
```
package main
import "fmt"
func main() {
a := 21
b := 10
var c int
c = a + b
fmt.Println("a + b = ", c )
c = a - b
fmt.Println("a - b = ", c )
c = a * b
fmt.Println("a * b = ", c )
c = a / b
fmt.Println("a / b = ", c )
c = a % b
fmt.Println("a % b = ", c )
a++
fmt.Println("a++ = ", a )
a=21
a--
fmt.Println("a-- = ", a )
}
```
打印結果
```
a + b = 31
a - b = 11
a * b = 210
a / b = 2
a % b = 1
a++ = 22
a-- = 21
```
## 關系運算符
下表列出了所有Go語言的關系運算符。假定 A 值為 10,B 值為 20。
運算符 | 描述 | 示例
---|---|---
== | 檢查兩個值是否相等,如果相等返回 true 否則返回 false。 | (A == B) 為 false
!= | 檢查兩個值是否不相等,如果不相等返回 true 否則返回 false。 | (A != B) 為 true
> | 檢查左邊值是否大于右邊值,如果是返回 true 否則返回 false。 | (A > B) 為 false
< | 檢查左邊值是否小于右邊值,如果是返回 frue 否則返回 false。 | (A < B) 為 true
>= | 檢查左邊值是否大于等于右邊值,如果是返回 true 否則返回 false。| (A >= B) 為 false
<= | 檢查左邊值是否小于等于右邊值,如果是返回 true 否則返回 false。 | (A <= B) 為 true
## 邏輯運算符
下表列出了所有Go語言的邏輯運算符。假定 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
## 位運算符
位運算符對整數在內存中的二進制位進行操作。
Go 語言支持的位運算符如下表所示。假定 A 為60,B 為13:
運算符 | 描述 | 示例
---|---|---
& | &是二元運算符,它以參與運算的兩數各對應的二進位組合,操作數中對應的位 如果對應的位都為1,那么結果就是1, 如果任意一個位是0 則結果就是0 | (A & B) 結果為 12, 二進制為 0000 1100
\| | 跟 & 的區別在于 如果對應的位中任一個操作數為1 那么結果就是1 | (A \| B) 結果為 61, 二進制為 0011 1101
^ | ^運算符跟 \| 類似,但有一點不同的是 如果兩個操作位都為1的話,結果產生0 | (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
&= | 按位與后賦值 | C &= 2 等于 C = C & 2
^= | 按位異或后賦值 | C ^= 2 等于 C = C ^ 2
\|= | 按位或后賦值 | C \|= 2 等于 C = C \| 2
## 運算符優先級
有些運算符擁有較高的優先級,二元運算符的運算方向均是從左至右。下表列出了所有運算符以及它們的優先級,由上至下代表優先級由高到低:
優先級 | 運算符
---|---
5 | * / % << >> & &^
4 | + - \| ^
3 | == != < <= > >=
2 | &&
1 | \|\|
可以通過使用括號來臨時提升某個表達式的整體運算優先級。