算術運算子
下表列出了所有Go語言的算術運算子,假定 A 值為 10,B 值為 20
| 運算子 | 描述 | 實體 |
|---|---|---|
| + | 相加 | A + B 輸出結果 30 |
| - | 相減 | A - B 輸出結果 -10 |
| * | 相乘 | A * B 輸出結果 200 |
| / | 相除 | B / A 輸出結果 2 |
| % | 求余 | B % A 輸出結果 0 |
| ++ | 自增 | A++ 輸出結果 11 |
| — | 自減 | A— 輸出結果 9 |
Go 語言沒有前置的 + +,- -
例如:(+ +a,- -a)這樣是錯誤,不被支持的
關系運算子
下表列出了所有Go語言的關系運算子,假定 A 值為 10,B 值為 20,
| 運算子 | 描述 | 實體 |
|---|---|---|
| == | 檢查兩個值是否相等,如果相等回傳 True 否則回傳 False, | (A == B) 為 False |
| != | 檢查兩個值是否不相等,如果不相等回傳 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 |
用==比較陣列
- 相同維數且含有相同個數元素的陣列才可以比較
- 每個元素都相同的才相等
邏輯運算子
下表列出了所有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:
| 運算子 | 描述 | 實體 | ||
|---|---|---|---|---|
| & | 按位與運算子”&”是雙目運算子, 其功能是參與運算的兩數各對應的二進位相與, | (A & B) 結果為 12, 二進制為 0000 1100 | ||
| | | 按位或運算子” | “是雙目運算子, 其功能是參與運算的兩數各對應的二進位相或 | (A | B) 結果為 61, 二進制為 0011 1101 |
| ^ | 按位異或運算子”^”是雙目運算子, 其功能是參與運算的兩數各對應的二進位相異或,當兩對應的二進位相異時,結果為1, | (A ^ B) 結果為 49, 二進制為 0011 0001 | ||
| << | 左移運算子”<<”是雙目運算子,左移n位就是乘以2的n次方, 其功能把”<<”左邊的運算元的各二進位全部左移若干位,由”<<”右邊的數指定移動的位數,高位丟棄,低位補0, | A << 2 結果為 240 ,二進制為 1111 0000 | ||
| >> | 右移運算子”>>”是雙目運算子,右移n位就是除以2的n次方, 其功能是把”>>”左邊的運算元的各二進位全部右移若干位,”>>”右邊的數指定移動的位數, | A >> 2 結果為 15 ,二進制為 0000 1111 |
&^按位置零
1 &^ 0 -- 1
1 &^ 1 -- 0
0 &^ 1 -- 0
0 &^ 0 -- 0
const (
Readable = 1 << iota //0001
Writable //0010
Exectable //0011
)
func TestBitClear(t *testing.T) {
a := 7 // 0111
a = a &^ Readable
a = a &^ Exectable
t.Log(a&Readable == Readable, a&Writable == Writable, a&Exectable == Exectable)
}
輸出
=== RUN TestBitClear
--- PASS: TestBitClear (0.00s)
operator_test.go:25: false true false
PASS
Process finished with exit code 0
示例代碼請訪問: https://github.com/wenjianzhang/golearning
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/54994.html
標籤:Go
上一篇:【go學習筆記】四、條件和回圈
下一篇:收支系統
