Go 学习笔记(5)— 算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、取地址和指针运算符
生活随笔
收集整理的這篇文章主要介紹了
Go 学习笔记(5)— 算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、取地址和指针运算符
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. Go 運算符分類
Go 語言內置的運算符有:
- 算術運算符
- 關系運算符
- 邏輯運算符
- 位運算符
- 賦值運算符
- 其他運算符
1.1 算術運算符
下表列出了所有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 語言中,自增/自減不再是一個操作符,而是一個語句。因此,在 Go 語言中自增只有一種寫法:
i++
i--
如果寫成前置自增 ++i,或者賦值后自增 a=i++都將導致編譯錯誤。
package mainfunc main() {a := 10b := 100a++// syntax error: unexpected ++ at end of statement// c := a++// syntax error: unexpected --, expecting }// --bprintln(a)println(b)
}
數值變量也可以支持 ++ 遞增和 -- 遞減語句(譯注:自增和自減是語句,而不是表達式,因此 x = i++ 之類的表達式是錯誤的):
v := 1
v++ // 等價方式 v = v + 1;v 變成 2
v-- // 等價方式 v = v - 1;v 變成 1
1.2 關系運算符
下表列出了所有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 |
1.3 邏輯運算符
下表列出了所有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 |
1.4 位運算符
Go 語言支持的位運算符如下表所示。假定 A 為 60,B 為 13
| 運算符 | 描述 | 實例 |
|---|---|---|
| & | 按位與運算符"&"是雙目運算符。 其功能是參與運算的兩數各對應的二進位相與 | (A & B) 結果為 12, 二進制為 0000 1100 |
| | | 按位或運算符"|"是雙目運算符。 其功能是參與運算的兩數各對應的二進位相或 | (A |
| ^ | 按位異或運算符"^"是雙目運算符。 其功能是參與運算的兩數各對應的二進位相異或,當兩對應的二進位相異時,結果為1 | (A ^ B) 結果為 49, 二進制為 0011 0001 |
| << | 左移運算符"<<“是雙目運算符。左移n位就是乘以2的n次方。 其功能把”<<“左邊的運算數的各二進位全部左移若干位,由”<<"右邊的數指定移動的位數,高位丟棄,低位補0 | A << 2 結果為 240 ,二進制為 1111 0000 |
| >> | 右移運算符">>“是雙目運算符。右移n位就是除以2的n次方。 其功能是把”>>“左邊的運算數的各二進位全部右移若干位,”>>"右邊的數指定移動的位數 | A >> 2 結果為 15 ,二進制為 0000 1111 |
1.5 賦值運算符
| 運算符 | 描述 | 實例 |
|---|---|---|
| = | 簡單的賦值運算符,將一個表達式的值賦給一個左值 | 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 |
1.6 其它運算符
| 運算符 | 描述 | 實例 |
|---|---|---|
| & | 返回變量存儲地址 | &a; 將給出變量的實際地址 |
| * | 指針變量 | *a; 是一個指針變量 |
指針變量 * 和地址值 & 的區別:
指針變量保存的是一個地址值,會分配獨立的內存來存儲一個整型數字。當變量前面有 * 標識時,才等同于 & 的用法,否則會直接輸出一個整型數字
func main() {var a int = 4var ptr *intptr = &aprintln("a的值為", a); // 4println("*ptr為", *ptr); // 4println("ptr為", ptr); // 824633794744
}
參考:
菜鳥教程
總結
以上是生活随笔為你收集整理的Go 学习笔记(5)— 算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、取地址和指针运算符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Go 学习笔记(7)— 常量定义、常量使
- 下一篇: Go 学习笔记(8)— 条件语句(if、