Go語言運(yùn)算符優(yōu)先級,是描述在計算機(jī)運(yùn)算計算表達(dá)式時執(zhí)行運(yùn)算的先后順序。 先執(zhí)行具有較高優(yōu)先級的運(yùn)算,然后執(zhí)行較低優(yōu)先級的運(yùn)算。 例如,我們常說的先執(zhí)行相乘和除,再執(zhí)行加減運(yùn)算。
算術(shù)運(yùn)算符
關(guān)系運(yùn)算符
邏輯運(yùn)算符
位運(yùn)算符
賦值運(yùn)算符
其他運(yùn)算符
下面我們來對應(yīng)Go語言各個運(yùn)算符,算術(shù)、關(guān)系、邏輯、按位、賦值和其他運(yùn)算符的詳細(xì)講解。
下表顯示了Go語言支持的所有算術(shù)運(yùn)算符。假設(shè)變量 A
的值為 10
,變量 B
的值為 20
,則:
運(yùn)算符 | 描述 | 示例 |
---|---|---|
+ | 添加兩個操作數(shù) | A+B=30 |
- | 從第一個操作數(shù)中減去第二個操作數(shù) | A-B=10 |
* | 將兩個操作數(shù)相乘 | A*B=200 |
/ | 將分子除以分母 | B/A=2 |
% | 模數(shù)運(yùn)算符,以及整數(shù)除法的余數(shù) | B%A=0 |
++ | 增加(遞增)運(yùn)算符,將整數(shù)值加一 | A++=11 |
-- | 相減(遞減)運(yùn)算符,將整數(shù)值減一 | A—=9 |
下表顯示了Go語言支持的所有關(guān)系運(yùn)算符。假設(shè)變量 A
的值為 10
,變量 B
的值為 20
,則:
運(yùn)算符 | 描述 | 示例 |
---|---|---|
== | 檢查兩個操作數(shù)的值是否相等,如果相等,則條件為真。 | (A==B)結(jié)果為假 |
!= | 檢查兩個操作數(shù)的值是否相等,如果值不相等,則條件為真。 | (A!=B)結(jié)果為真 |
> | 檢查左操作數(shù)的值是否大于右操作數(shù)的值,如果是,則條件為真。 | (A>B)結(jié)果為假 |
< | 檢查左操作數(shù)的值是否小于右操作數(shù)的值,如果是,則條件為真。 | (A<B)結(jié)果為真 |
>= | 檢查左操作數(shù)的值是否大于或等于右操作數(shù)的值,如果是,則條件為真。 | (A>=B)結(jié)果為假 |
<= | 檢查左操作數(shù)的值是否小于或等于右操作數(shù)的值,如果是,則條件為真。 | (A<=B)結(jié)果為真 |
下表顯示了Go語言支持的所有邏輯運(yùn)算符。假設(shè)變量A
的值為1
,變量B
的值為0
,則:
運(yùn)算符 | 描述 | 示例 |
---|---|---|
&& | 邏輯AND 運(yùn)算符。如果兩個操作數(shù)都不為零,則條件為真。 | (A&&B)結(jié)果為真 |
|| | 邏輯OR 運(yùn)算符。如果兩個操作數(shù)中的任何一個非零,則條件變?yōu)檎妗?/td> | (A||B)結(jié)果為真 |
! | 邏輯非運(yùn)算符。用于反轉(zhuǎn)其操作數(shù)的邏輯狀態(tài)。如果條件為真,則邏輯非運(yùn)算符將為假。 | !(A&&B)結(jié)果為真 |
按位操作符對位進(jìn)行操作,并執(zhí)行逐位操作。 &
,|
和^
的真值表如下:
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 |
假設(shè)A = 60
, B = 13
; 現(xiàn)在的二進(jìn)制格式,如下:
A = 0011 1100 B = 0000 1101 ----------------- A&B = 0000 1100 A|B = 0011 1101 A^B = 0011 0001 ~A = 1100 0011
Go語言支持的位運(yùn)算符,如在下表中所列。 假設(shè)變量A=60
,并且變量B=13
,則:
運(yùn)算符 | 描述 | 示例 |
---|---|---|
& | 如果兩個操作數(shù)中都存在二進(jìn)制AND 運(yùn)算符,則將其復(fù)制到結(jié)果。 | (A&B )結(jié)果為12 ,也就是0000 1100 |
| | 二進(jìn)制OR 運(yùn)算符復(fù)制一個位,如果它存在于任一操作數(shù)。 | (A|B)結(jié)果為61,也就是0011 1101 |
^ | 二進(jìn)制XOR 運(yùn)算符復(fù)制位,如果它在一個操作數(shù)中設(shè)置,但不是在兩個操作數(shù)中設(shè)置。 | (A^B)結(jié)果為49 ,也就是0011 0001 |
<< | 二進(jìn)制左移位運(yùn)算符。左操作數(shù)值向左移動由右操作數(shù)指定的位數(shù)。 | A<<2 結(jié)果為240 ,也就是1111 0000 |
>> | 二進(jìn)制右移運(yùn)算符。左操作數(shù)值向右移動由右操作數(shù)指定位數(shù)。 | A>>2 結(jié)果為15,也就是0000 1111 |
Go語言支持以下賦值運(yùn)算符:
運(yùn)算符 | 描述 | 示例 |
---|---|---|
= | 簡單賦值操作符,將值從右側(cè)操作數(shù)分配給左側(cè)操作數(shù) | C=A+B ,就是將A+B 的值賦給C |
+= | 相加和賦值運(yùn)算符,向左操作數(shù)添加右操作數(shù),并將結(jié)果賦給左操作數(shù) | C+=A 相當(dāng)于C=C+A |
-= | 減去和賦值運(yùn)算符,從左操作數(shù)中減去右操作數(shù),并將結(jié)果賦給左操作數(shù) | C-=A 相當(dāng)于C=C-A |
*= | 乘法和賦值運(yùn)算符,它將右操作數(shù)與左操作數(shù)相乘,并將結(jié)果賦給左操作數(shù) | C*=A 相當(dāng)于C=C*A |
/= | 除法和賦值運(yùn)算符,它用右操作數(shù)劃分左操作數(shù),并將結(jié)果分配給左操作數(shù) | C/=A 相當(dāng)于C=C/A |
%= | 模數(shù)和賦值運(yùn)算符,它使用兩個操作數(shù)來取模,并將結(jié)果分配給左操作數(shù) | C%=A 相當(dāng)于C=C%A |
<<= | 左移和賦值運(yùn)算符 | C<<=2 相當(dāng)于C=C<<2 |
>>= | 右移和賦值運(yùn)算符 | C>>=2 相當(dāng)于C=C>>2 |
&= | 按位和賦值運(yùn)算符 | C&=2 相當(dāng)于C=C&2 |
^= | 按位異或和賦值運(yùn)算符 | C^=2 相當(dāng)于C=C^2 |
|= | 按位包含OR 和賦值運(yùn)算符 | C|=2相當(dāng)于C=C|2 |
還有一些其他重要的運(yùn)算符包括sizeof
和? :
,在Go語言中也是支持的。
運(yùn)算符 | 描述 | 示例 |
---|---|---|
& | 返回變量的地址 | &a 將給出變量a 的實(shí)際地址。 |
* | 指向變量的指針 | *a 是指向變量a 的指針。 |
運(yùn)算符優(yōu)先級確定表達(dá)式中的分組。這會影響表達(dá)式的計算方式。某些運(yùn)算符比其他運(yùn)算符具有更高的優(yōu)先級; 例如,乘法運(yùn)算符比加法運(yùn)算符有更高的優(yōu)先級。
當(dāng)同級別的運(yùn)算符出現(xiàn)在同一個表達(dá)式中,從左到右的順序計算,比如乘除一起,不管是乘在前面還是除在前面都是從左到右計算乘、除運(yùn)算符。加減亦是如此。
例如:x = 7 + 3 * 2
; 這里,計算結(jié)果x
被分配13
,而不是20
,因?yàn)檫\(yùn)算符 *
具有比+
有更的優(yōu)先級,所以它首先乘以3 * 2
,然后加上7
。
這里,具有最高優(yōu)先級的運(yùn)算符放在表的頂部,具有最低優(yōu)先級的運(yùn)算符出現(xiàn)在底部。 在表達(dá)式中,將首先計算較高優(yōu)先級運(yùn)算符。
分類 | 描述 | 關(guān)聯(lián)性 |
---|---|---|
后綴 | ()[]->.++ -- | 左到右 |
一元 | + -!~++ --(type)*&sizeof | 右到左 |
乘法 | */ % | 左到右 |
加法 | + - | 左到右 |
移位 | <<>> | 左到右 |
關(guān)系 | <<=>>= | 左到右 |
相等 | ==!= | 左到右 |
按位AND | & | 左到右 |
按位XOR | ^ | 左到右 |
按位OR | | | 左到右 |
邏輯AND | && | 左到右 |
邏輯OR | || | 左到右 |
條件 | ?: | 右到左 |
分配 | =+=-=*=/= %=>>= <<= &= ^= |= | 右到左 |
逗號 | , | 左到右 |
綜合技術(shù)交流:點(diǎn)擊加入--> [SO JSON官方交流①群][收費(fèi)]
綜合技術(shù)交流:點(diǎn)擊加入--> [SO JSON官方交流②群][免費(fèi)]
要求:不能發(fā)廣告、暴力、政治、付費(fèi)教程,違者直接踢出。
備注:入群費(fèi)用5元,沒有QQ錢包,可以先支付寶
or 微信
掃碼支付5元贊助后,我拉您進(jìn)去。QQ聯(lián)系我。
掃碼贊助:贊助二維碼。
技術(shù)交流QQ群:①群259217951,②群166848545
站長郵箱:so@sojson.com
對頁面內(nèi)容有任何疑問和建議,請聯(lián)系我們。
所有贊助/開支都講公開明細(xì),用于網(wǎng)站維護(hù):贊助名單查看
正在加載... ...