Go(又稱 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 開發的一種靜態強類型、編譯型語言。Go 語言語法與 C 相近,但功能上有:內存安全,GC(垃圾回收),結構形態及 CSP-style 併發計算。

Golang的創建者Rob Pike說:“Go項目致力於解決Google軟件開發緩慢和笨拙的問題,從而使該過程更高效和更具可擴展性。該語言是由編寫、閱讀、調試和維護大型軟件系統的人所設計,這也是爲他們自己所設計的。”這就是說,設計Go時,有一系列特殊的問題要解決,最初擁有C、Pascal、Modula和Oberon等高級編程語言的最佳特性的堅實基礎。它還牢記了Python、C++、Java等語言的有用特性,這些就是Go要解決的問題。

“很多Go的新人都會要求從所知的語言中獲取功能。但這些特性並不屬於Go——而且語言是固定的。給Go添加功能不會讓它變得更好,只是讓它變得更大。這將使Go因少了點不同而變得不那麼有趣。”在2016年,Go被軟件評價公司TIOBE 選爲“TIOBE 2016 年最佳語言”

無論如何,Go並不是最快的編程語言,Rust、Julia、C++和C會更快。但這些語言都沒有GC,因此它們沒有Go那麼簡單,其實也沒有比Go快多少。現在已知Go有一些特性。它也很容易使用,速度快,生產力高。但它可以應用在哪裏從而提高工作效率呢?到底能用Go來做什麼?

· 本地雲web服務開發,特別是微服務的使用:Go kit、Micro、Gizmo、Kite、Goa、Caddy等等。

· 使用 Gin、Martini、Revel、Gorilla、Beego等開發REST API。

· 使用 gRPC、Twirp、Spiral、Gorilla開發RPC API。

· GraphQL API開發 graphql-go、gqlgen、thunder。

· 使用Serverless框架 Serverless Framework、Google Cloud Functions、Sparta、Gordon進行無服務器功能開發。

· 使用 Hugo、Vugu、TinyGo、Vecty進行Web UI開發(WebAssembly)。

· 使用 Gobot、Mainflux、TinyGo、EMBD進行機器人、物聯網和嵌入式開發。

· 使用Cobra、cli開發CLI 應用程序。

· 使用 GoLearn、Gorgonia進行機器學習和AI開發。

還有一些不是特別明顯的例子:

· 使用 gomobile開發移動應用

· 使用 Lorca、Wails、Fyne開發桌面應用

· 使用 Ebiten、Pixel、G3N進行遊戲開發

· 爲Discord、Telegram、Slack、more開發聊天機器人

· Blockchain 區塊鏈開發

從上面的舉例可以看出,目前Golang的應用範圍顯然更多的是面向雲、網絡和系統編程。最後,go語言的特色應用創建者的話“與大多數其他的語言不同,Go有一個基本的權衡,即:你想要什麼,更有趣的語言,還是更容易運行和維護的語言?”

怎樣才能學好go語言?

首先,推薦 Go 語言聖經《 The Go Programming Language 》 ,每個知識點都有示例,還有練習題。具體查看下面的京東官方詳情頁:

當然,也可以看 Golang 官網的教程和資料,比如 Go tour 、effective go,然後,就是多實踐。這些可以多看一些開源項目或者慕課相關教學案例。

相關文章