Go 語言中奇怪的 if 語句

常見的 if 語句大約是這個樣子的(C++):

Event event = getEvent();
if (event == EventA) {
  processA(event);
} else {
  processB(event);
}

這樣有一個問題:變量 event 定義在了 if 語句的外面荐绝,也就是說社痛,在 if 語句之后胀蛮,也可以繼續(xù)使用 event 變量乾胶;而如果后續(xù)的操作中不需要 event 變量了,它實(shí)際上就造成了命名空間的污染谴轮。這并不是一個嚴(yán)重的問題炒瘟,多數(shù)情況下不會造成任何問題,而如果一定要解決的話第步,在 C++ 中可以在 event 的定義之外套一層大括號來限定它的作用域疮装。雖然代碼看上去有一些奇怪,但無傷大雅粘都。比如這樣:

{
  Event event = getEvent();
  if (event == EventA) {
    processA(event);
  } else {
    processB(event);
  }
}

但是 Go 的設(shè)計者不知是出于什么原因廓推,非要從語法上解決這個問題。于是 Go 中的 if 語句可以寫成這個樣子:

if event := getEvent(); event == EventA {
  processA(event)
} else {
  processB(event)
}

對翩隧,你沒有看錯樊展。雖然 event 是定義在了 if 中,但它在 else 中也是可以用的堆生。也就是說专缠,這種寫法實(shí)際上是上述的 C++ 寫法的語法糖。

并不清楚 Go 的設(shè)計者添加這個語法糖的目的是什么淑仆。它僅僅是為了解決變量的作用域問題而提出涝婉,卻犧牲了代碼的可讀性。if 語句可能會變得過長而不易閱讀蔗怠;在后續(xù)重構(gòu)的過程中墩弯,拆分 if 語句也會變得困難。為了解決一個小問題而增加一種有問題的語法寞射,看上去有點(diǎn)得不嘗失渔工。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市桥温,隨后出現(xiàn)的幾起案子引矩,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脓魏,死亡現(xiàn)場離奇詭異兰吟,居然都是意外死亡通惫,警方通過查閱死者的電腦和手機(jī)茂翔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來履腋,“玉大人珊燎,你說我怎么就攤上這事∽窈” “怎么了悔政?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長延旧。 經(jīng)常有香客問我谋国,道長,這世上最難降的妖魔是什么迁沫? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任芦瘾,我火速辦了婚禮,結(jié)果婚禮上集畅,老公的妹妹穿的比我還像新娘近弟。我一直安慰自己,他們只是感情好挺智,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布祷愉。 她就那樣靜靜地躺著,像睡著了一般赦颇。 火紅的嫁衣襯著肌膚如雪二鳄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天媒怯,我揣著相機(jī)與錄音订讼,去河邊找鬼。 笑死沪摄,一個胖子當(dāng)著我的面吹牛躯嫉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播杨拐,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼祈餐,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了哄陶?” 一聲冷哼從身側(cè)響起帆阳,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蜒谤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體山宾,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年鳍徽,在試婚紗的時候發(fā)現(xiàn)自己被綠了资锰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡阶祭,死狀恐怖绷杜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情濒募,我是刑警寧澤鞭盟,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站瑰剃,受9級特大地震影響齿诉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜晌姚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一粤剧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧舀凛,春花似錦俊扳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至懊烤,卻和暖如春梯醒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背腌紧。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工茸习, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人壁肋。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓号胚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親浸遗。 傳聞我的和親對象是個殘疾皇子猫胁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評論 2 359

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

  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,835評論 0 38
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)跛锌。 注意:講述HT...
    kismetajun閱讀 27,518評論 1 45
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程弃秆,因...
    小菜c閱讀 6,444評論 0 17
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,111評論 1 32
  • 版權(quán)聲明本文首發(fā)于幣乎請注意:無需授權(quán)即可轉(zhuǎn)載菠赚;甚至無需保留以上版權(quán)聲明… 00 今天看到幣乎官方的公告《幣乎公告...
    白馬少年說閱讀 500評論 0 0