-
1 # 兄弟連IT教育
-
2 # 廣東IT優就業
個人覺得,前景很客觀。未來掌握該語言的工作也會越來越多,具體工作好不好找還要看自己技術掌握程度。
應用前景好。Go語言是谷歌2009釋出的第二款開源程式語言。是一個相對而言比較新的程式語言,雖然Go尚未成熟,但谷歌旗下App Engine和其他部分產品已經開始使用go語言來編寫。正因如此,谷歌才需要外部程式設計人員的協助。派克說:我們需要更好的程式庫和工具,而開源社群能夠在這些方面為我們提供很大的幫助。
很多人喜歡Go語言,因為Go語言專門針對多處理器系統應用程式的程式設計進行了最佳化,使用Go編譯的程式可以媲美C或C++程式碼的速度,而且更加安全、支援並行程序。此外,不得不承認,簡潔、快速、安全、並行、有趣、源,記憶體管理、陣列安全、編譯迅速等特色都使得Go語言更加吸引人。
工作效率很重要,相當於時間和金錢。Go語言有很高的生產效率。Go不需要build檔案(Makefile, Java的build.xml, pom.xml這些),而是隻需要執行"go build"即可,透過目錄結構自己找到專案結構。透過這樣的“約定優於配置”(convention over configuration)的設計,大大提高了效率。呼叫C程式碼的cgo的設計,而在Go這裡簡單到可以把C程式碼直接嵌到Go程式碼同一個檔案裡,然後"go build"就可以。
綜上,雖然Go語言比較新,但其特色跟優點還是很明顯的,未來前景很看好,熟練掌握Go語言能節省許多時間,提高工作效率,未來找工作就不用擔心。
-
3 # 乘風破浪的小七
本人程式設計師一枚,使用過的語言有c/c++,lua,go等。工作中也曾有go語言寫過幾個東西。個人來說,比較看好go語言。
可愛的logo,為什麼這麼說呢?
一,google爸爸的強力支援。go剛開始時實際上屬於一個玩票性質的專案,但是後面發展越來越好,上升成了公司的專案。
二,開發團隊。go的開發者都是大神,Rob Pike, Ken Thompson(c語言,unix開發者)和Robert Griesemer,都是牛逼哄哄的人物。
三,明星產品的出現。docker的出現,完美的證明了go的實力。
四,go自身的魅力。良好的工程支援,簡潔的語法,優秀的跨平臺能力,接近c語言的效能。
所以,go是很有前景的語言,特別是在服務端開發方面。據我所知,滴滴、bilibili、360、騰訊、京東都在使用go,還有很多遊戲公司也在用go做遊戲伺服器。
回覆列表
什麼是Go?
Go語言是谷歌2009釋出的第二款開源程式語言。
Go語言專門針對多處理器系統應用程式的程式設計進行了最佳化,使用Go編譯的程式可以媲美C或C++程式碼的速度,而且更加安全、支援並行程序。不僅可以開發web,可以開發底層,目前知乎就是用golang開發。區塊鏈首選語言就是go,以太坊,超級賬本都是基於go語言,還有go語言版本的btcd.
Go的目標是希望提升現有程式語言對程式庫等依賴性(dependency)的管理,這些軟體元素會被應用程式反覆呼叫。由於存在並行程式設計模式,因此這一語言也被設計用來解決多處理器的任務。
Google對Go寄予厚望。其設計是讓軟體充分發揮多核心處理器同步多工的優點,並可解決面向物件程式設計的麻煩。它具有現代的程式語言特色,如垃圾回收,幫助程式設計師處理瑣碎但重要的記憶體管理問題。Go的速度也非常快,幾乎和C或C++程式一樣快,且能夠快速製作程式。
Go的網站就是用Go所建立,但Google有更大的野心。該軟體是專為構建伺服器軟體所設計(如Google的Gmail)。Google認為Go還可應用到其他領域,包括在瀏覽器內執行軟體,取代JavaScript的角色。
為什麼要學習GO語言,GO的優勢是什麼?
1、Go有什麼優勢
Go的優勢
1:效能
2:語言效能很重要
3:開發者效率&不要過於創新
4:併發性&通道
5:快速的編譯時間
6:打造團隊的能力
7:強大的生態系統
8:GOFMT,強制程式碼格式
9:gRPC和ProtocolBuffers
可直接編譯成機器碼,不依賴其他庫,glibc的版本有一定要求,部署就是扔一個檔案上去就完成了。
靜態型別語言,但是有動態語言的感覺,靜態型別的語言就是可以在編譯的時候檢查出來隱藏的大多數問題,動態語言的感覺就是有很多的包可以使用,寫起來的效率很高。
語言層面支援併發,這個就是Go最大的特色,天生的支援併發,我曾經說過一句話,天生的基因和整容是有區別的,大家一樣美麗,但是你喜歡整容的還是天生基因的美麗呢?Go就是基因裡面支援的併發,可以充分的利用多核,很容易的使用併發。
內建runtime,支援垃圾回收,這屬於動態語言的特性之一吧,雖然目前來說GC不算完美,但是足以應付我們所能遇到的大多數情況,特別是Go1.1之後的GC。
簡單易學,Go語言的作者都有C的基因,那麼Go自然而然就有了C的基因,那麼Go關鍵字是25個,但是表達能力很強大,幾乎支援大多數你在其他語言見過的特性:繼承、過載、物件等。
豐富的標準庫,Go目前已經內建了大量的庫,特別是網路庫非常強大,我最愛的也是這部分。
內建強大的工具,Go語言裡面內建了很多工具鏈,最好的應該是gofmt工具,自動化格式化程式碼,能夠讓團隊review變得如此的簡單,程式碼格式一模一樣,想不一樣都很困難。
跨平臺編譯,如果你寫的Go程式碼不包含cgo,那麼就可以做到window系統編譯linux的應用,如何做到的呢?Go引用了plan9的程式碼,這就是不依賴系統的資訊。
內嵌C支援,前面說了作者是C的作者,所以Go裡面也可以直接包含c程式碼,利用現有的豐富的C庫。
2、Go適合用來做什麼
伺服器程式設計,以前你如果使用C或者C++做的那些事情,用Go來做很合適,例如處理日誌、資料打包、虛擬機器處理、檔案系統等。
分散式系統,資料庫代理器等
網路程式設計,這一塊目前應用最廣,包括Web應用、API應用、下載應用、
記憶體資料庫,前一段時間google開發的groupcache,couchbase的部分組建
雲平臺,目前國外很多雲平臺在採用Go開發,CloudFoundy的部分組建,前VMare的技術總監自己出來搞的apcera雲平臺。
3、Go成功的專案
nsq:bitly開源的訊息佇列系統,效能非常高,目前他們每天處理數十億條的訊息
docker:基於lxc的一個虛擬打包工具,能夠實現PAAS平臺的組建。
packer:用來生成不同平臺的映象檔案,例如VM、vbox、AWS等,作者是vagrant的作者
skynet:分散式排程框架
Doozer:分散式同步工具,類似ZooKeeper
Heka:mazila開源的日誌處理系統
cbfs:couchbase開源的分散式檔案系統
tsuru:開源的PAAS平臺,和SAE實現的功能一模一樣
groupcache:memcahe作者寫的用於Google下載系統的快取系統
god:類似redis的快取系統,但是支援分散式和擴充套件性
gor:網路流量抓包和重放工具
GoUsers-go-wiki-AlistoforganizationsthatuseGo.
4、Go還存在的缺點
以下缺點是我自己在專案開發中遇到的一些問題:
Go的import包不支援版本,有時候升級容易導致專案不可執行,所以需要自己控制相應的版本資訊
Go的goroutine一旦啟動之後,不同的goroutine之間切換不是受程式控制,runtime排程的時候,需要嚴謹的邏輯,不然goroutine休眠,過一段時間邏輯結束了,突然冒出來又執行了,會導致邏輯出錯等情況。
GC延遲有點大,我開發的日誌系統傷過一次,同時併發很大的情況下,處理很大的日誌,GC沒有那麼快,記憶體回收不給力,後來經過profile程式改進之後得到了改善。
pkg下面的圖片處理庫很多bug,還是使用成熟產品好,呼叫這些成熟庫imagemagick的介面比較靠譜
最後還是建議大家學習Go,這門語言真的值得大家好好學習,因為它可以做從底層到前端的任何工作。