【Go系列】初識(shí)Go語(yǔ)言

? ? 寫(xiě)在面前实抡,雖然Golang已經(jīng)誕生10年阁簸,網(wǎng)絡(luò)上也遍布著相關(guān)的學(xué)習(xí)文章畔柔,但鑒于學(xué)習(xí)從 聽(tīng)->看->寫(xiě)->深入理解->舉一反三 這么一個(gè)的過(guò)程,所以還是督促自己把初步的認(rèn)知整理成文字來(lái)加固自己的一個(gè)記憶和理解捍掺。

言歸正題撼短。

為什么會(huì)選擇Go

? ? 在上一年里,python一直是我喜歡的語(yǔ)言也是數(shù)據(jù)處理中首選的挺勿,包括復(fù)雜的web爬取甚至到數(shù)據(jù)可視化以及機(jī)器學(xué)習(xí)曲横,幾乎它可以做任何事情。但隨著Go的成熟满钟,越來(lái)越多的公司開(kāi)始逐步改善自身架構(gòu)轉(zhuǎn)向Go胜榔,這驅(qū)使我學(xué)習(xí)Go的前提也思考如何將學(xué)習(xí)到的新技能如何應(yīng)用到做工作中胳喷。

Go的優(yōu)勢(shì)

●并發(fā)與協(xié)程goroutine

? ? 總所周知湃番,Go有超強(qiáng)的并發(fā)處理能力其重要原因在于支持協(xié)程并發(fā)(協(xié)程又稱(chēng)微線程,比線程更輕量吭露、開(kāi)銷(xiāo)更小吠撮,性能更高),操作起來(lái)非常簡(jiǎn)單讲竿,語(yǔ)言級(jí)別提供關(guān)鍵字(go)用于啟動(dòng)協(xié)程泥兰,并且在同一臺(tái)機(jī)器上可以啟動(dòng)成千上萬(wàn)個(gè)協(xié)程。這里對(duì)比C#的線程開(kāi)發(fā)和Go的協(xié)程實(shí)現(xiàn)题禀,明顯更直接鞋诗、簡(jiǎn)單。這就是Go的魅力所在迈嘹,以簡(jiǎn)單削彬、高效的方式解決問(wèn)題,關(guān)鍵字go秀仲,或許就是Go語(yǔ)言最重要的標(biāo)志融痛。

(其他無(wú)協(xié)程概念的語(yǔ)言要想完成并發(fā)編程要同時(shí)了解線程、鎖神僵、Semaphore雁刷、CPU緩存方式等等)

? ? ? ? ? ? ? ? ?C#線程開(kāi)發(fā)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Go協(xié)程開(kāi)發(fā)? ? ? ? ? ? ? ? ??


●消息通信channel

????在Go語(yǔ)言中,使用基于消息傳遞的通信方式(而不是大多數(shù)語(yǔ)言所使用的基于共享內(nèi)存的通信方式)進(jìn)行協(xié)程間通信保礼,并且將消息管道(channel)作為基本的數(shù)據(jù)類(lèi)型沛励,使用類(lèi)型關(guān)鍵字(chan)進(jìn)行定義责语,其本質(zhì)是一個(gè)先進(jìn)先出的隊(duì)列,使用goroutine+channel進(jìn)行數(shù)據(jù)通訊簡(jiǎn)單高效目派,同時(shí)也線程安全鹦筹,多個(gè)goroutine可同時(shí)修改一個(gè)channel,不需要加鎖址貌。

通過(guò)用channel實(shí)現(xiàn)并發(fā)等待任務(wù)


●高性能HTTPServer

? ??作為服務(wù)端語(yǔ)言铐拐,Go在語(yǔ)言級(jí)別自帶HTTP/TCP/UDP高性能服務(wù)器,基于協(xié)程并發(fā)练对,為業(yè)務(wù)開(kāi)發(fā)提供最直接有效的能力支持遍蟋。

●格式化代碼Gofmt

? ? 作為很多有強(qiáng)迫癥的人看到別人的代碼都并未排版甚至太多的換行左 { 不一致的問(wèn)題出現(xiàn)一定非常捉狂,但是Go 編譯器始終盡力保持代碼的清潔螟凭,將未使用的變量視為編譯錯(cuò)誤虚青。而且,Go 采用了獨(dú)特的方法讓計(jì)算機(jī)能處理大多數(shù)格式問(wèn)題螺男。在保存或編譯時(shí) Go 會(huì)運(yùn)行 Gofmt 的程序棒厘,它會(huì)處理大多數(shù)的格式問(wèn)題。

(如果不關(guān)心其中的一個(gè)變量下隧,只需使用 _(下劃線)并將其分配給空標(biāo)識(shí)符即可)

總結(jié)語(yǔ)

? ? Go主要是基于兩方面的考慮

????1奢人、執(zhí)行性能?

????縮短API的響應(yīng)時(shí)長(zhǎng),解決批量請(qǐng)求訪問(wèn)超時(shí)的問(wèn)題淆院。在業(yè)務(wù)場(chǎng)景下何乎,一次API批量請(qǐng)求,往往會(huì)涉及對(duì)另外接口服務(wù)的多次調(diào)用土辩,而在之前的實(shí)現(xiàn)模式下支救,要做到并行調(diào)用是非常困難的,串行處理卻不能從根本上提高處理性能拷淘。而Go語(yǔ)言不一樣各墨,通過(guò)協(xié)程可以方便的實(shí)現(xiàn)API的并行處理,達(dá)到處理效率的最大化启涯。 依賴(lài)Go的高性能HTTP Server贬堵,提升系統(tǒng)吞吐能力,由數(shù)百級(jí)別提升到數(shù)千里甚至過(guò)萬(wàn)級(jí)別逝嚎。

? ? 2扁瓢、開(kāi)發(fā)效率?

????Go語(yǔ)言使用起來(lái)簡(jiǎn)單、代碼描述效率高补君、編碼規(guī)范統(tǒng)一引几、上手快。 通過(guò)少量的代碼,即可實(shí)現(xiàn)框架的標(biāo)準(zhǔn)化伟桅,并以統(tǒng)一的規(guī)范快速構(gòu)建API業(yè)務(wù)邏輯敞掘。 能快速的構(gòu)建各種通用組件和公共類(lèi)庫(kù),進(jìn)一步提升開(kāi)發(fā)效率楣铁,實(shí)現(xiàn)特定場(chǎng)景下的功能量產(chǎn)玖雁。

? ? Go何止只有上面的優(yōu)點(diǎn),還有很多諸如編譯快盖腕,垃圾回收機(jī)制赫冬,強(qiáng)大標(biāo)準(zhǔn)庫(kù)和穩(wěn)定性;只是缺點(diǎn)也會(huì)存在的溃列,但是如果要寫(xiě)一個(gè) API或者完成某個(gè)需要大量磁盤(pán) / 網(wǎng)絡(luò)調(diào)用的任務(wù)劲厌,Go依然是現(xiàn)在的首選。

“世界上只有兩種語(yǔ)言:人們抱怨的語(yǔ)言和沒(méi)人使用的語(yǔ)言听隐〔贡牵”??

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? —— ?Bjarne Stroustrup

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市雅任,隨后出現(xiàn)的幾起案子风范,更是在濱河造成了極大的恐慌,老刑警劉巖沪么,帶你破解...
    沈念sama閱讀 212,599評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件硼婿,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡成玫,警方通過(guò)查閱死者的電腦和手機(jī)加酵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)拳喻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)哭当,“玉大人,你說(shuō)我怎么就攤上這事冗澈∏湛保” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,084評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵亚亲,是天一觀的道長(zhǎng)彻采。 經(jīng)常有香客問(wèn)我,道長(zhǎng)捌归,這世上最難降的妖魔是什么肛响? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,708評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮惜索,結(jié)果婚禮上特笋,老公的妹妹穿的比我還像新娘。我一直安慰自己巾兆,他們只是感情好猎物,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布虎囚。 她就那樣靜靜地躺著,像睡著了一般蔫磨。 火紅的嫁衣襯著肌膚如雪淘讥。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 50,021評(píng)論 1 291
  • 那天堤如,我揣著相機(jī)與錄音蒲列,去河邊找鬼。 笑死搀罢,一個(gè)胖子當(dāng)著我的面吹牛嫉嘀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播魄揉,決...
    沈念sama閱讀 39,120評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼剪侮,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了洛退?” 一聲冷哼從身側(cè)響起瓣俯,我...
    開(kāi)封第一講書(shū)人閱讀 37,866評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎兵怯,沒(méi)想到半個(gè)月后彩匕,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,308評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡媒区,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評(píng)論 2 327
  • 正文 我和宋清朗相戀三年驼仪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片袜漩。...
    茶點(diǎn)故事閱讀 38,768評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绪爸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出宙攻,到底是詐尸還是另有隱情奠货,我是刑警寧澤,帶...
    沈念sama閱讀 34,461評(píng)論 4 333
  • 正文 年R本政府宣布座掘,位于F島的核電站递惋,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏溢陪。R本人自食惡果不足惜萍虽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望形真。 院中可真熱鬧杉编,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,850評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至绒净,卻和暖如春见咒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挂疆。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,082評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工改览, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人缤言。 一個(gè)月前我還...
    沈念sama閱讀 46,571評(píng)論 2 362
  • 正文 我出身青樓宝当,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親胆萧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子庆揩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評(píng)論 2 350