go語言基礎之運算子
一、運算子分類
1.1 算術運算子
運算子 |
術語 |
示例 |
結果 |
+ |
加 |
10 + 5 |
15 |
- |
減 |
10 - 5 |
5 |
* |
乘 |
10 * 5 |
50 |
/ |
除 |
10 / 5 |
2 |
% |
取模(取餘) |
10 % 3 |
1 |
++ |
後自增,沒有前自增 |
a=0; a++ |
a=1 |
-- |
後自減,沒有前自減 |
a=2; a-- |
a=1 |
1.2 關係運算符
運算子 |
術語 |
示例 |
結果 |
== |
相等於 |
4 == 3 |
false |
!= |
不等於 |
4 != 3 |
true |
< |
小於 |
4 < 3 |
false |
> |
大於 |
4 > 3 |
true |
<= |
小於等於 |
4 <= 3 |
false |
>= |
大於等於 |
4 >= 1 |
true |
1.3 邏輯運算子
運算子 |
術語 |
示例 |
結果 |
! |
非 |
!a |
如果a為假,則!a為真; 如果a為真,則!a為假。 |
&& |
與 |
a && b |
如果a和b都為真,則結果為真,否則為假。 |
|| |
或 |
a || b |
如果a和b有一個為真,則結果為真,二者都為假時,結果為假。 |
1.4 位運算子
運算子 |
術語 |
說明 |
示例 |
& |
按位與 |
參與運算的兩數各對應的二進位相與 |
60 & 13 結果為12 |
| |
按位或 |
參與運算的兩數各對應的二進位相或 |
60 | 13 結果為61 |
^ |
異或 |
參與運算的兩數各對應的二進位相異或,當兩對應的二進位相異時,結果為1 |
60 ^ 13 結果為240 |
<< |
左移 |
左移n位就是乘以2的n次方。 左邊丟棄,右邊補0。 |
4 << 2 結果為16 |
>> |
右移 |
右移n位就是除以2的n次方。 右邊丟棄,左邊補位。 |
4 >> 2 結果為1 |
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的地址 |
* |
取值運算子 |
*a |
指標變數a所指向記憶體的值 |
1.7 運算子優先順序
在Go語言中,一元運算子擁有最高的優先順序,二元運算子的運算方向均是從左至右。
下表列出了所有運算子以及它們的優先順序,由上至下代表優先順序由高到低:
優先順序 |
運算子 |
7 |
^ ! |
6 |
* / % << >> & &^ |
5 |
+ - | ^ |
4 |
== != < <= >= > |
3 |
<- |
2 |
&& |
1 |
|| |
示例: