首頁>Club>
13
回覆列表
  • 1 # 架構師之路

    作為一名運維人員。我覺得go的好處是。一次編譯到處執行。

    相對於python的包依賴。版本問題等要省心的多。我司的監控收集等都是go編寫。

  • 2 # 人民郵電出版社

    Go語言是Google開發的一種靜態強型別、編譯型、併發型,並具有垃圾回收功能的程式語言,它用批判吸收的眼光,融合C語言、Java等眾家之長,將簡潔、高效演繹得淋漓盡致。

    Go語言起源於2007年,當時Google的技術大神們備受C++越來越臃腫的困擾,決心開發一種新的語言來取代C++。他們認為:與其在臃腫的語言上不斷增加新的特性,不如簡化程式語言。於是,Golang這門新語言應運而生。

    在十年多的時間裡,Go語言發展勢頭強勁,憑藉其簡潔、高效的特性,在競爭激烈的程式語言市場中佔據了一席之地。Google、騰訊、阿里等大公司紛紛選擇使用Go語言來開發服務應用專案。當然,和其他的程式語言一樣,Go語言也有其自身的缺陷。

    一 .「Go」的特點及優勢

    Go語言的設計者們一直致力於降低構建簡單、可靠、高效軟體的門檻。相比於其他語言,Go語言具有眾多令人興奮不已的特點和優勢:

    1.自動垃圾回收降低了開發難度

    記憶體和資源管理一直是一個讓人非常抓狂的難題。在其他語言(如C或C++)中,使用記憶體前要先分配這段記憶體,使用完畢後再將其釋放掉,一個小疏忽就可能引發記憶體洩漏,導致程式甚至系統崩潰。而Go語言的現代化垃圾回收機制顯著地降低了開發難度,把無趣的記憶體管理交給專業的編譯器去做,而讓程式設計師專注於更有趣的事情。

    2.更豐富的內建型別

    Go語言是一種典型的實戰派語言,它內建了一個其他靜態語言通常用庫方式來支援的字典型別(map),理由很簡單:既然絕大多數開發者都需要用到這個型別,為什麼還非要每個人都寫一行import語句來包含一個庫?

    Go語言還新增了一個數據型別:陣列切片(Slice)。我們可以將陣列切片看作是一種可動態增長的陣列,其功能與C++標準庫中的vector類似,但有效地消除了反覆寫以下幾行程式碼的工作量:

    使用Go語言,開發者不用再費事新增依賴的包,既減少了輸入工作量,又可以讓程式碼更簡潔。

    3.支援函式多返回值

    目前的主流語言中除Python外基本都不支援函式的多返回值功能,但很多情況下開發者非常需要這個功能。比如,我們要定義一個函式,用於返回個人的名字資訊,而名字資訊包含多個部分——姓氏、名字、中間字,在不支援多返回值的語言中有兩種做法來實現名字資訊的返回:

    專門定義一個結構體:

    或以傳出引數的方式返回:

    Go語言的多返回值功能讓開發者既不用再只為了返回多個值而專門定義一個數據結構,也不用再區分引數列表中哪幾個用於輸入,哪幾個用於輸出。

    使用Go語言返回名字資訊可以這樣寫:

    4.漂亮的錯誤處理

    漂亮的錯誤處理規範是Go語言最大的亮點之一。Go語言引入了defer關鍵字用於標準的錯誤處理流程,並提供了內建函式panic、recover完成異常的丟擲與捕獲。與C++和Java等語言中的異常捕獲機制相比,Go語言的錯誤處理機制可以大量減少程式碼量,開發者無需再僅為了程式安全而新增大量一層套一層的try-catch語句。

    5.匿名函式和閉包

    在Go語言中,所有的函式也是值型別,可以作為引數傳遞。Go語言支援常規的匿名函式和閉包,比如下列程式碼就定義了一個名為f的匿名函式,開發者可以隨意對該匿名函式變數進行傳遞和呼叫:

    6.簡潔的型別和“非侵入式”介面

    Go語言的型別定義非常接近C語言中的結構(struct),甚至直接沿用了struct關鍵字。為了保持簡潔,Go語言沒有直接沿襲C++和Java的傳統去設計一個超級複雜的型別系統,不支援繼承和過載,而只是支援最基本的型別組合功能。雖然看起來過於簡潔,但Go語言依然能夠實現C++和Java使用複雜的型別系統才能實現的功能。

    而引入強大的“非侵入式”介面讓開發者從以往對C++和Java開發中的介面管理問題中解脫了出來。

    7.併發程式設計更輕盈更安全

    Go語言引入了goroutine概念。goroutine是一種比執行緒更加輕盈、更省資源的協程。透過使用goroutine而不是裸用作業系統的併發機制,以及使用訊息傳遞來共享記憶體而不是使用共享記憶體來通訊,併發程式設計變得更加輕盈和安全。

    二.「Go」的主要應用場景

    Golang非常適合用來做網路併發方面的服務,比如訊息推送、監控、容器等。國內外的很多著名公司都使用了Go語言來開發服務及應用,比如:

    Google最核心的搜尋和廣告業務;騰訊的Docker容器化百度的運維BFE(Baidu Front End)專案,應對龐大的前端頁面訪問量。小米的運維監控系統,小米商城、小米影片等團隊也在使用Go語言

    ……

    三.「Go」的不足之處

    儘管Go語言獨特的垃圾回收機制和併發程式設計機制等設計使程式碼更簡潔,並大大提高了程式的效能,但與Python、Java、C/C++等語言相比,Go語言還是太年輕。

    1.軟體包版本管理不完善

    Go語言的軟體包版本管理一直被開發人員吐槽。Go語言沒有制定特定版本的依賴庫,在不同時間構建時,建立的生成可能會基於不同版本的包。在這方面,Go語言還無法與Python、Java等語言的軟體包管理系統相媲美。

    2.錯誤資訊難獲得

    Go語言的錯誤處理最被人所詬病的一點是,開發者不能從函式上知道下層函式可能返回哪些型別的錯誤,很容易丟失錯誤發生的範圍,難以提供有效的錯誤資訊。

    作為一門新興的語言,Go語言難免存在種種缺陷。但出身名門的它擁有強大的後備力量,開源社群的使用者不斷地貢獻新的輪子,Google也組建了一個獨立的小組全職開發Go語言,在Google內部,Go語言有逐漸取代Java和Python主流地位的趨勢。未來Go語言的身影應該會出現在越來越多的應用服務當中。

    如果你對Go語言感興趣的話,可以參考以下兩本圖書,深入地學習Go的特性,並與其他語言進行比較和判斷。

    《Go語言實戰》,作者:[美]William Kennedy [美]Brian Ketelsen [美]Erik St. Martin,譯者:李兆海,審校:謝孟軍

    本書向讀者提供了一個專注、全面且符合語言習慣的視角。本書同時關注語言的規範和實現,涉及的內容包括語法、型別系統、併發、管道、測試,以及其他一些主題。 作者William Kennedy是一位熟練的軟體開發者,也是部落格http://GoingGo.Net的作者。 Brian Ketelsen和Erik St. Martin是全球Go語言大會GopherCon的組織者,也是Go語言框架Skynet的聯合作者。

    《Go語言程式設計》,作者:許式偉 呂桂華

    這本書首先引領讀者快速瀏覽Go 語言的全貌,迅速消除讀者對這門語言的陌生感,然後循序漸進地介紹了Go 語言的面向過程和麵向物件的程式設計語法,其中穿插了一些與其他主流語言的比較,以讓讀者理解Go 語言的設計動機,接著探討了Go 語言重要的並行程式設計方法,之後介紹了網路程式設計、工程管理、安全程式設計、開發工具等非語法相關但非常重要的內容,適合所有層次的開發者閱讀。

  • 3 # Go語言中文網

    Go為什麼這麼火?這個問題不同人看法不一樣。前兩年知乎還有一個問答:Go這種逆天的語言,為什麼五年了還火不起來?這兩年,整體上 Go 更流行了,但依然比較小眾,需要更樂觀的評價它!

    為什麼覺得 Go 語言這麼火?

    有一句話說的好,你覺得是個寶,在別人那可能啥也不是!你的圈子讓你看到的、聽到的會不一樣。如果你關注他,會發現到處都是它的資訊。雖然 Go 語言這兩年確實更流行了,但實際上並沒有想象的那麼火,畢竟什麼語言要火起來,需要一定的時間積累,我只能說 Go 有這個潛力。

    Go語言由Google的幾位大牛在2007年研發,2009年開源,並在2012年釋出正式版本。2009年9月份釋出出來,就受到了很多人的關注,同年獲得了 Tiobe 公佈的年度程式語言。由於 GC 等的一些問題,之後一度進入較低迷的狀態,但社群依然挺火熱,Go team 積極解決 Go 的一些問題。在2016年,Go再次獲得了 Tiobe 年度程式語言。

    我們不關心這個排名是否有問題,但從一定程度上可以看出,Go 語言能夠在幾年時間內獲得兩次年度程式語言,足以看出其潛力。

    Go真的越來越火

    Go語言之所以受到越來越多的關注,有以下一些原因:

    1、背景好。不僅是Google出品,創造該語言的人,也是計算機界鼎鼎大名的,Ken Thompson、Rob Pike、Robert 等,後續又加入了其他大牛。

    2、為併發而生。Go的產生就是為了解決實際問題,包括:利用多核、容易些併發程式、解決工程常見問題等。併發性是 Go 突出的亮點。

    3、Go效能強悍。如下一張圖可以看出端倪。

    4、Go語言簡單易學。學習門檻低,會更容易被人接受。

    總結

    總的來說,Go現在還是比較小眾,但出於快速增長期,多方面的原因讓它收到極大的關注,而且很多人、企業在大力推廣 Go。我建議大家都學學Go語言。

  • 中秋節和大豐收的關聯?
  • 《在遠方》中劉雲天給姚遠投資時身家有多少,值八百萬的商機是什麼?