《Go語言四十二章經(jīng)》第九章 運算符

作者:李驍

9.1 內(nèi)置運算符

  • 算術(shù)運算符
  • 關(guān)系運算符
  • 邏輯運算符
  • 位運算符
  • 賦值運算符
  • 其他運算符

Go語言的算術(shù)運算符:

運算符 含義 示意
+ 相加 A + B
- 相減 A - B
* 相乘 A * B
/ 相除 B / A 結(jié)果還是整數(shù) 8/3=2
% 求余 B % A
++ 自增 A++ 1
-- 自減 A--

Go語言的關(guān)系運算符:

運算符 含義 示意
== 檢查兩個值是否相等咳焚。 (A == B) 為 False
!= 檢查兩個值是否不相等管闷。 (A != B) 為 True
> 檢查左邊值是否大于右邊值。 (A > B) 為 False
< 檢查左邊值是否小于右邊值。 (A < B) 為 True
>= 檢查左邊值是否大于等于右邊值撞牢。 (A >= B) 為 False
<= 檢查左邊值是否小于等于右邊值。 (A <= B) 為 True

Go語言的邏輯運算符:

運算符 操作 含義
&& 邏輯與 如果兩邊的操作數(shù)都是 True童叠,則條件 True结闸,否則為 False。
|| 邏輯或 如果兩邊的操作數(shù)有一個 True坎弯,則條件 True纺涤,否則為 False。
! 邏輯非 如果條件為 True抠忘,則邏輯 NOT 條件 False撩炊,否則為 True。

Go語言的位運算符:

位運算符對整數(shù)在內(nèi)存中的二進制位進行操作崎脉。
下表列出了位運算符 &拧咳,|,和 ^ 的計算:

& 與 | 或 ^ 異或
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

Go 語言支持的位運算符含義囚灼。

  • & 按位與運算符"&"是雙目運算符骆膝。 其功能是參與運算的兩數(shù)各對應(yīng)的二進位相與。

  • | 按位或運算符"|"是雙目運算符灶体。 其功能是參與運算的兩數(shù)各對應(yīng)的二進位相或阅签。

  • ^ 按位異或運算符"^"是雙目運算符。 其功能是參與運算的兩數(shù)各對應(yīng)的二進位相異或蝎抽,當(dāng)兩對應(yīng)的二進位相異時愉择,結(jié)果為1。

  • << 左移運算符"<<"是雙目運算符。左移n位就是乘以2的n次方锥涕。 其功能把"<<"左邊的運算數(shù)的各二進位全部左移若干位衷戈,由"<<"右邊的數(shù)指定移動的位數(shù),高位丟棄层坠,低位補0殖妇。

  • >> 右移運算符">>"是雙目運算符。右移n位就是除以2的n次方破花。 其功能是把">>"左邊的運算數(shù)的各二進位全部右移若干位谦趣,">>"右邊的數(shù)指定移動的位數(shù)。

Go語言的賦值運算符:

運算符 含義 示意
= 簡單的賦值運算符
+= 相加后再賦值 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

Go語言的其他運算符:

運算符 含義
& 返回變量存儲地址 &a; 將給出變量的實際地址座每。
* 指針變量前鹅。 *a; 是一個指針變量

9.2 運算符優(yōu)先級

有些運算符擁有較高的優(yōu)先級,二元運算符的運算方向均是從左至右峭梳。下表列出了所有運算符以及它們的優(yōu)先級舰绘,由上至下代表優(yōu)先級由高到低:

優(yōu)先級 運算符
7 ^ !
6 * / % << >> & &^
5 + - | ^
4 == != < <= >= >
3 <-
2 &&
1 ||

當(dāng)然,你可以通過使用括號來臨時提升某個表達式的整體運算優(yōu)先級葱椭。

9.3 幾個特殊運算符

位清除 &^:

將指定位置上的值設(shè)置為 0捂寿。將運算符左邊數(shù)據(jù)相異的位保留,相同位清零 :

X=2
Y=4
x&^y==x&(^y)

首先我們先換算成2進制 0000 0010 &^ 0000 0100 = 0000 0010 如果y bit位上的數(shù)是0則取x上對應(yīng)位置的值孵运, 如果y bit位上為1則結(jié)果位上取0

1秦陋、如果右側(cè)是0,則左側(cè)數(shù)保持不變

2治笨、如果右側(cè)是1驳概,則左側(cè)數(shù)一定清零

3、功能同a&(^b)相同

4旷赖、如果左側(cè)是變量抡句,也等同于:

var a int
a &^= b

^(XOR) 在Go語言中XOR是作為二元運算符存在的:

但是如果是作為一元運算符出現(xiàn),他的意思是按位取反杠愧。

如果作為二元運算符則是, XOR是不進位加法計算待榔,也就是異或計算。0000 0100 + 0000 0010 = 0000 0110 = 6

常見可用于整數(shù)和浮點數(shù)的二元運算符有 +流济、-锐锣、* 和 /。
(相對于一般規(guī)則而言绳瘟,Go 在進行字符串拼接時允許使用對運算符 + 的重載雕憔,但 Go 本身不允許開發(fā)者進行自定義的運算符重載)

對于整數(shù)運算而言,結(jié)果依舊為整數(shù)糖声,例如:9 / 4 -> 2斤彼。

取余運算符只能作用于整數(shù):9 % 4 -> 1分瘦。

浮點數(shù)除以 0.0 會返回一個無窮盡的結(jié)果,使用 +Inf 表示琉苇。

你可以將語句 b = b + a 簡寫為 b+=a嘲玫,同樣的寫法也可用于 -=、*=并扇、/=去团、%=。

對于整數(shù)和浮點數(shù)穷蛹,你可以使用一元運算符 ++(遞增)和 --(遞減)土陪,但只能用于后綴:

i++ -> i += 1 -> i = i + 1

i-- -> i -= 1 -> i = i - 1

同時,帶有 ++ 和 -- 的只能作為語句肴熏,而非表達式,因此 n = i++ 這種寫法是無效的蛙吏。

函數(shù) rand.Float32 和 rand.Float64 返回介于 [0.0源哩,1.0) 之間的偽隨機數(shù),其中包括 0.0 但不包括 1.0出刷。函數(shù) rand.Intn 返回介于 [0,n) 之間的偽隨機數(shù)坯辩。

你可以使用 Seed(value) 函數(shù)來提供偽隨機數(shù)的生成種子馁龟,一般情況下都會使用當(dāng)前時間的納秒級數(shù)字。

本書《Go語言四十二章經(jīng)》內(nèi)容在github上同步地址:https://github.com/ffhelicopter/Go42

雖然本書中例子都經(jīng)過實際運行漆魔,但難免出現(xiàn)錯誤和不足之處坷檩,煩請您指出;如有建議也歡迎交流改抡。
聯(lián)系郵箱:roteman@163.com

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末矢炼,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子阿纤,更是在濱河造成了極大的恐慌句灌,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件欠拾,死亡現(xiàn)場離奇詭異胰锌,居然都是意外死亡,警方通過查閱死者的電腦和手機藐窄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門资昧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人荆忍,你說我怎么就攤上這事格带〕方桑” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵叽唱,是天一觀的道長屈呕。 經(jīng)常有香客問我,道長尔觉,這世上最難降的妖魔是什么凉袱? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮侦铜,結(jié)果婚禮上专甩,老公的妹妹穿的比我還像新娘。我一直安慰自己钉稍,他們只是感情好涤躲,可當(dāng)我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著贡未,像睡著了一般种樱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上俊卤,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天嫩挤,我揣著相機與錄音,去河邊找鬼消恍。 笑死岂昭,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的狠怨。 我是一名探鬼主播约啊,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼佣赖!你這毒婦竟也來了恰矩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤憎蛤,失蹤者是張志新(化名)和其女友劉穎外傅,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體俩檬,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡栏豺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了豆胸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奥洼。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖晚胡,靈堂內(nèi)的尸體忽然破棺而出灵奖,到底是詐尸還是另有隱情嚼沿,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布瓷患,位于F島的核電站骡尽,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏擅编。R本人自食惡果不足惜攀细,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望爱态。 院中可真熱鬧谭贪,春花似錦、人聲如沸锦担。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽洞渔。三九已至套媚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間磁椒,已是汗流浹背堤瘤。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留浆熔,地道東北人本辐。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像蘸拔,于是被迫代替她去往敵國和親师郑。 傳聞我的和親對象是個殘疾皇子环葵,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line)调窍,也就是一...
    悟名先生閱讀 4,131評論 0 13
  • 進制基本概念 什么是進制?進制是一種計數(shù)的方式,數(shù)值的表示形式 常見的進制十進制、二進制张遭、八進制邓萨、十六進制 進制書...
    極客江南閱讀 1,997評論 0 11
  • 運算符是處理數(shù)據(jù)的基本方法,用來從現(xiàn)有的值得到新的值菊卷。JavaScript 提供了多種運算符缔恳,本章逐一介紹這些運算...
    許先生__閱讀 597評論 0 3
  • 運算符是處理數(shù)據(jù)的基本方法,用來從現(xiàn)有的值得到新的值洁闰。JavaScript 提供了多種運算符歉甚,本章逐一介紹這些運算...
    徵羽kid閱讀 662評論 0 0
  • 1 關(guān)鍵字 1.1 關(guān)鍵字的概述 Java的關(guān)鍵字對java的編譯器有特殊的意義,他們用來表示一種數(shù)據(jù)類型扑眉,或...
    哈哈哎呦喂閱讀 646評論 0 0