go語言好不好?可以用來做什麼?如何學好golang?

2020-12-15 科學傳美

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,然後,就是多實踐。這些可以多看一些開源項目或者慕課相關教學案例。

相關焦點

  • 為什麼golang語言會變得越來越流行
    作為一個開發者,如果你細心觀察,就會發現越來越多的公司開始使用go語言進行業務的開發。從知乎到b站,很多公司都把業務全面轉向了go語言。那麼為什麼這麼多公司選擇了go語言,為什麼這麼多開發者選擇了go語言,golang變得越來越流行的原因到底是什麼?
  • Go語言愛好者周刊:第 55 期—8月Go排第幾?
    3、Go語言規範你掌握多少?這道題檢驗一下接口值和普通類型值能進行相等性比較嗎?結果如何?14、技術分享之 golang 構建分布式任務系統[8]如何使用golang構建一個分布式的任務系統 ? 該任務系統搞了幾個月,有一些經驗心得分享給大家。
  • golang.org 已經成為歷史
    Go 於2009年11月10日正式開源發布,而 Go 官網 https://golang.org/ 也同時發布上線。
  • Golang語言情懷-第38期 Go 語言設計模式 監視器(觀察者)
    當它的狀態發生改變時,向其各個觀察者發出通知Observer(抽象觀察者):觀察者將對觀察目標的改變做出反應ConcreteObserver(具體觀察者):具體觀察者中維持一個指向具體目標對象的引用,它用於存儲具體觀察者的有關狀態,這些狀態和具體目標的狀態保持一致我們下面以上班(在上班的時候有些同事會看股票行情,有些還會看NBA,老闆則偶爾會走動,前臺秘書和同事的關係比較好,
  • 程式設計師:5年php開發,發展有限準備轉go,網友:你還會轉回來的!
    這名程式設計師網友目前坐標深圳,已經從事5年php開發工作,最近他抽空研究了一下網站招聘信息,感覺php的後期發展還是很有限,因此他決定轉go(也可以和php結合),他認為go是靜態語言,而python與php都是動態語言,他準備學習一個不一樣類型的語言,這是他的初步想法,那麼怎麼走出第一步,怎麼開始比較好呢?針對他的這種情況,讓我們看看網友們都是怎麼說的吧!
  • Go 語言之 defer 的前世今生 - CSDN
    作者 | 歐長坤來源 | 碼農桃花源延遲語句 defer 在最早期的 Go 語言設計中並不存在,後來才單獨增加了這一特性,由 Robert Griesemer 完成語言規範的編寫 [Griesemer, 2009], 並由 Ken Thompson 完成最早期的實現 [Thompson, 2009],兩人合作完成這一語言特性。
  • 比特幣市值飆升,催生Golang語言編寫的挖礦木馬圍攻雲主機
    騰訊安全威脅情報中心檢測到利用Redis未授權訪問漏洞直接寫入計劃任務,下載用golang語言編寫的挖礦木馬下載器superman,根據挖礦算力推測該團夥已控制約1萬臺失陷系統進行門羅幣挖礦。 騰訊安全近期已捕獲較多利用golang語言編寫的各類腳本木馬,這些木馬利用多個不同linux伺服器組件的高危漏洞或弱密碼入侵雲伺服器挖礦。
  • 用golang實現的dubbo-getty是怎麼進行tcp通信的?客戶端篇
    試想如下:通信是雙方的事情,所以抽象出一個Endpoint接口支持設置讀寫超時時間支持收發數據時進行壓縮,消耗一些cpu,換來數據流量的減少統計收發的報文數量,收發的字節數量要支持序列化和反序列化,實現業務對象和字節數組的互相轉換,畢竟通過socket發送的是字節流要支持字節流的編解碼,否則沒有邊界的tcp字節流
  • 這篇文章很贊:Golang GC 探究
    在實際使用go語言的過程中,碰到了一些看似奇怪的內存佔用現象,於是決定對go語言的垃圾回收模型進行一些研究。本文對研究的結果進行一下總結。什麼是垃圾回收?曾幾何時,內存管理是程式設計師開發應用的一大難題。GO的垃圾回收器go語言垃圾回收總體採用的是經典的mark and sweep算法。1.3版本以前,golang的垃圾回收算法都非常簡陋,然後其性能也廣被詬病:go runtime在一定條件下(內存超過閾值或定期如2min),暫停所有任務的執行,進行mark&sweep操作,操作完成後啟動所有任務的執行。
  • 為什麼很多公司轉型 Go 語言開發?Go 語言能做什麼
    2、Go語言能做什麼Go 語言從發布 1.0 版本以來備受眾多開發者關注並得到廣泛使用,Go 語言的簡單、高效、並發特性吸引了眾多傳統語言開發者的加入,而且人數越來越多。一般的選擇,都是選擇用於自己公司合適的產品系統來做,比如消息推送的、監控的、容器的等,Golang特別適合做網絡並發的服務,這是他的強項,所以也是被優先用於這些項目。Go語言作為一門大型項目開發語言,在很多大公司相繼使用,甚至完全轉向Go開發。4、寫在最後當然,一個技術能不能發展起來,關鍵還要看三點。
  • 【Golang】使用Golang編寫Hugo發布器
    Hugo 是 Golang 編寫的靜態網站生成器,速度快,易用,可配置,我也是通過golang的學習,發現了Hugo,它不用依賴一大堆東西,一個二進位文件就可以搞定,簡潔。The world’s fastest framework for building websites.
  • 英語基礎不好的學生,如何才能學好英語,好的方法助你事半功倍
    學生時期,隨著學習的越來越深入,相信很多的學生都會在學習英語上遇到了很多的難題,而且還不知道如何去破解。而英語作為一個主要的科目,在成績上也是佔有非常大的比重,只有學好這門課程,才能有一個好的總成績,才能有一個好的未來。
  • Go 經典入門系列 22:Channel
    在上一教程裡,我們探討了如何使用 Go 協程(Goroutine)來實現並發。我們接著在本教程裡學習信道(Channel),學習如何通過信道來實現 Go 協程間的通信。什麼是信道? 信道可以想像成 Go 協程之間通信的管道。
  • 學好英語不過是勤查英英字典的事:good to go什麼意思?
    學好英語不過是勤查英英字典的事:good to go什麼意思?很多人「學」英語習慣一上來就是「中文是什麼?」「答案」固然重要,學會動手找到「答案」卻更為重要。而且,在「網際網路+」時代的今天,學並學好英語「秘籍」不過是你勤快一點動手查查英英字典的事。
  • golang本身是用什麼語言寫的?
    Google逐步實現Go語言「去C語言化」很多程式語言的核心都是C語言,甚至可以說現代計算機核心基礎都構建在C語言和Unix之上,肯湯普森和丹尼斯裡奇老爺子創造了C語言和Unix,然後C和Unix再生萬物。JVM、PHP核心、GCC、Emacs、Vim、Unix、Linux等等,這些全都是用C語言來寫的。
  • 適合Go 新手學習的開源項目——在 GitHub 學編程
    GitHub 上面有什麼好玩、入門級的 Go 語言項目?正如 Go 語言之父的 Rob Pike 所說的 Less is more or less is less,本文也本著這一原則:大道至簡。下面的每一個 Go 語言開源項目都能獨當一面,成為新手的學習項目而且合在一起可以為你提供更為全面的 Go 認知——1 + 1 > 2 。
  • 2021年程式語言趨勢預測:Python和JavaScript仍火熱,Go不可小覷
    /go從這些GitHub庫數量,可以看到Go對開發人員的吸引力越來越高。跨平臺,可以在Windows,Mac和Linux上構建和運行Python應用程式。有一個龐大的社區,每當遇到困難時,都會有人幫助您。大量的庫,框架和工具。無論您想做什麼,很可能其他人以前都做過,因為Python已經問世20多年了。簡而言之,Python是一種多用途語言,具有簡單,乾淨且對初學者友好的語法。所有這些都意味著Python很棒。
  • 我為什麼放棄了 Python ,選擇了 Go?
    除了以上四種頭牌語言,還有一種即 Python(蟒蛇)。隨著人工智慧、物聯網、數據科學等領域的興起,Python 迅速升溫,成為諸多開發者的首選入門語言。然而就在一片追隨聲中,不少開發者從 Python 轉向了 Go 語言,這究竟是什麼原因?
  • Go語言潛力有目共睹,但它的Goroutine機制底層原理你了解嗎?
    來源 | 後端技術指南針(ID:gh_ed1e2b37dcb6)Go語言的巨大潛力有目共睹,今天我們來學習Go語言的Goroutine機制,這也可能是Go語言最為吸引人的特性了,理解它對於掌握Go語言大有裨益,話不多說開始吧!
  • 「GoLang編程」Go語言中如何操作Excel表格
    以前都是用python,現在學習Go語言,剛好試試。要操作excel,自然需要找讀寫Excel的Package,前人栽好樹,等我去乘涼。去哪裡找合適的Package呢?Go語言的包在 https://pkg.go.dev/。打開就能搜索。這裡錄入關鍵字xlsx(如果需要讀寫xls則錄入xls也可以)。(技巧哦,找第三方包的方法)