Go語言運算符


Go語言運算符優先級,是描述在計算機運算計算表達式時執行運算的先後順序。 先執行具有較高優先級的運算,然後執行較低優先級的運算。 例如,我們常說的先執行相乘和除,再執行加減運算。

一、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

二、Go語言 關系運算符

下表顯示了Go語言支持的所有關系運算符。假設變量 A 的值為 10,變量 B 的值為 20,則:

運算符 描述 示例
== 檢查兩個操作數的值是否相等,如果相等,則條件為真。 (A==B)結果為假
!= 檢查兩個操作數的值是否相等,如果值不相等,則條件為真。 (A!=B)結果為真
> 檢查左操作數的值是否大於右操作數的值,如果是,則條件為真。 (A>B)結果為假
< 檢查左操作數的值是否小於右操作數的值,如果是,則條件為真。 (A<B)結果為真
>= 檢查左操作數的值是否大於或等於右操作數的值,如果是,則條件為真。 (A>=B)結果為假
<= 檢查左操作數的值是否小於或等於右操作數的值,如果是,則條件為真。 (A<=B)結果為真

三、Go語言 邏輯運算符

下表顯示了Go語言支持的所有邏輯運算符。假設變量A的值為1,變量B的值為0,則:

運算符 描述 示例
&& 邏輯AND運算符。如果兩個操作數都不為零,則條件為真。 (A&&B)結果為真
|| 邏輯OR運算符。如果兩個操作數中的任何一個非零,則條件變為真。 (A||B)結果為真
! 邏輯非運算符。用於反轉其操作數的邏輯狀態。如果條件為真,則邏輯非運算符將為假。 !(A&&B)結果為真

四、Go語言 位運算符

按位操作符對位進行操作,並執行逐位操作。 |^的真值表如下:

p q p&q p|q p^q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

假設A = 60, B = 13; 現在的二進製格式,如下:

A = 0011 1100 B = 0000 1101 ----------------- A&B = 0000 1100 A|B = 0011 1101 A^B = 0011 0001 ~A = 1100 0011

Go語言支持的位運算符,如在下表中所列。 假設變量A=60,並且變量B=13,則:

運算符 描述 示例
& 如果兩個操作數中都存在二進製AND運算符,則將其復製到結果。 (A&B)結果為12,也就是0000 1100
| 二進製OR運算符復製一個位,如果它存在於任一操作數。 (A|B)結果為61,也就是0011 1101
^ 二進製XOR運算符復製位,如果它在一個操作數中設置,但不是在兩個操作數中設置。 (A^B)結果為49,也就是0011 0001
<< 二進製左移位運算符。左操作數值向左移動由右操作數指定的位數。 A<<2結果為240,也就是1111 0000
>> 二進製右移運算符。左操作數值向右移動由右操作數指定位數。 A>>2結果為15,也就是0000 1111

五、Go語言 賦值運算符

Go語言支持以下賦值運算符:

運算符 描述 示例
= 簡單賦值操作符,將值從右側操作數分配給左側操作數 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
|= 按位包含OR和賦值運算符 C|=2相當於C=C|2

六、Go語言 其他運算符

還有一些其他重要的運算符包括sizeof? :,在Go語言中也是支持的。

運算符 描述 示例
& 返回變量的地址 &a將給出變量a的實際地址。
* 指向變量的指針 *a是指向變量a的指針。

Go語言中的運算符優先級

運算符優先級確定表達式中的分組。這會影響表達式的計算方式。某些運算符比其他運算符具有更高的優先級; 例如,乘法運算符比加法運算符有更高的優先級。

當同級別的運算符出現在同一個表達式中,從左到右的順序計算,比如乘除一起,不管是乘在前面還是除在前面都是從左到右計算乘、除運算符。加減亦是如此。

例如:x = 7 + 3 * 2; 這裏,計算結果x被分配13,而不是20,因為運算符 *具有比+有更的優先級,所以它首先乘以3 * 2,然後加上7

這裏,具有最高優先級的運算符放在表的頂部,具有最低優先級的運算符出現在底部。 在表達式中,將首先計算較高優先級運算符。

分類 描述 關聯性
後綴 ()[]->.++ -- 左到右
一元 + -!~++ --(type)*&sizeof 右到左
乘法 */ % 左到右
加法 + - 左到右
移位 <<>> 左到右
關系 <<=>>= 左到右
相等 ==!= 左到右
按位AND & 左到右
按位XOR ^ 左到右
按位OR | 左到右
邏輯AND && 左到右
邏輯OR || 左到右
條件 ?: 右到左
分配 =+=-=*=/= %=>>= <<= &= ^= |= 右到左
逗號 , 左到右