天天看點

【譯】Golang 的藝術、哲學和科學 #導入Word文檔圖檔#

  1. Golang 的粉絲群正在增長​
  2. Golang 開發:從入門到精通的 5 步
  3. 答案是……

早在 2013 年,當我第一次了解 Golang 程式設計語言時,我就面臨着一種“to be or not to be”的問題。

雖然它不像哈姆雷特那樣具有生命意義,但對我來說仍然幾乎是形而上學的。

當任何項目的幾乎所有技術都捆綁在一起時,為什麼我們需要另一種技術?

作為一名 Java 後端開發人員,我對此非常好奇,并決定試一試。

掌握一種或多種輔助語言以輕松處理副任務總是有用的,是以 Go - 靜态類型的編譯程式設計語言 - 似乎是一個很棒的候選者。

是以最大的問題是 Go or not to Go?

我将分享我對為什麼應該認真考慮 Golang 的見解,并将解釋(不加糖衣)為什麼它是一門具有挑戰性但美麗的語言。

Golang 的粉絲群正在增長

讓我們從事實開始:下圖表明 Golang 目前正在搶盡風頭。

【譯】Golang 的藝術、哲學和科學 #導入Word文檔圖檔#

在 2019 年,GO 正在迅速成為開發人員最喜歡的技術,進而使其在既定技術(例如 C ++,Python,JavaScript等)中的存在感,

GitHub 指出,是根據 pull 請求的數量,GO 是排名前五的語言之一。

如此受歡迎有幾個原因。我會舉一些例子。

【譯】Golang 的藝術、哲學和科學 #導入Word文檔圖檔#

我特别喜歡 Go 的是,它傾向于組合而不是繼承。制作複雜且多層的階級繼承結構不是一個好主意,因為它使您的代碼變得不那麼靈活且難以擴充。

是以,Golang 接口(方法集)系統消除了子類和基于類型的繼承。

盡管如此,Golang 成功的基石還是并發性。它的概念包含在 Go 諺語中,這是一組 Golang 哲學概念。

Go 中的接口與 Java 中的接口非常不同。類型不需要顯式聲明。任何提供接口中命名的方法的類型都可以被視為實作。

【譯】Golang 的藝術、哲學和科學 #導入Word文檔圖檔#

Go 使用 goroutines 和通道而不是線程,僅消耗 2KB 記憶體。

是以,與 Java 線程相比,有機會通過更輕量級和可擴充的部署來轉換數百萬個 goroutine。

Goroutines 之間的通信由 Channel提供,這意味着隻有一個 Goroutine 可以在一定時間通路資料。

這種方法使我們能夠建立異步并行程式,執行任務比以順序編寫的方式更快。

然而,關于 Go 的一切都不是那麼美好。當我深入了解 Golang 時,發現它充滿了驚喜。

Golang 開發:從入門到精通的 5 步

當你開始學習另一種語言時,總會有挫敗感。

關于 Go 的主要抱怨之一是它的錯誤處理方法,有些人覺得這很有趣。與許多程式設計語言不同,它沒有标準的異常邏輯。

GO 不允許開發人員在嘗試捕獲塊中包裹代碼。按照慣例,函數将錯誤作為其最後一個傳回值。

是以,if err!= nil 語句,要在每個步驟中正确處理它。

if err != nil {

// handle the error

}

很多開發人員不喜歡這種看似不變的 nil 檢查。就是為什麼我經常将 Golang 的學習曲線與悲傷的五個階段進行比較。

【譯】Golang 的藝術、哲學和科學 #導入Word文檔圖檔#

每一行 Go 代碼都伴随着一種失望的感覺。我想,“根本不能有這麼多的錯誤檢查!”

但是,如果我們記得 Golang 是為 Google 建立的,那麼可以在這樣的決定中找到一些邏輯。

想象:數百個項目,成千上萬的開發商,數百萬個代碼線。

為了確定一緻性和簡單性,創作者擺脫了一些“備援”。例如,沒有泛型,這會導緻代碼的重用級别降低。

【譯】Golang 的藝術、哲學和科學 #導入Word文檔圖檔#

如您所見,簡單性似乎相當複雜。如果有這麼多其他語言都有“正常”的錯誤處理,我為什麼要忍受這個?

盡管我對 Go 很生氣,但我決定朝着“從此幸福快樂”邁進。創作者推薦以下内容:

【譯】Golang 的藝術、哲學和科學 #導入Word文檔圖檔#

從理論上講,這聽起來不錯,但在實踐中,通常沒有适當的上下文可以讓開發人員正确處理錯誤。

如果有泛型,那可以幫助解決這個難題。通過利用空接口 (interface {}) 功能,可以實作某種通用機制。

然而,它帶來了很多痛苦,作者自己承認:

【譯】Golang 的藝術、哲學和科學 #導入Word文檔圖檔#

在這種不确定的狀态下,許多開發人員與 Golang 分手了。

就個人而言,我認為這是一個巨大的錯誤,因為您不應該在語言本身中尋找答案。

答案是……

現在,我已經用 Go 寫了 3 年了。我可以說,其中一件棘手的事情是,接受階段不會到來,直到你去進行一個語言可以證明自己的非常大的項目。

Go 是可能性的藝術。這不是關于什麼是最好的或什麼是正确的。這與語言無關。這是關于你可以做些什麼來讓它發揮作用。

繼續閱讀