go語言是後端語言。 go語言是服務端的程式語言,其方向主要是後端。使用Go語言做後端開發的原因:1.在語言層面具有語法簡潔、執行效率高(底層語言)的特點;2、Go語言是主打並發、為並發而生的,其出發點即是瞄準大數據雲端運算時代背景下的高並發、分散式應用場景;3、Go語言可以在不同平台直接編譯產生可執行程序,基礎記憶體佔用很少。
本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。
go語言是服務端的程式語言,go語言的方向不是前端,主要是後端。
Go(又稱 Golang)是Google開發的靜態強型別、編譯型、並髮型,並具有垃圾回收功能的程式語言。 Go於2009年11月正式宣布推出,成為開放原始碼項目,並在Linux及Mac平台上進行了實現,後來追加了Windows系統下的實現。
Go 語言文法與 C 相近,但功能上有:記憶體安全,GC(垃圾回收),結構型態及 CSP-style 並發計算。
Go的語法接近C語言,但對於變數的宣告有所不同。 Go支援垃圾回收功能。 Go的平行模型是以東尼·霍爾的通訊順序進程(CSP)為基礎,採取類似模型的其他語言包括Occam和Limbo,但它也具有Pi運算的特徵,例如通道傳輸。在1.8版本中開放插件(Plugin)的支持,這意味著現在能從Go中動態載入部分函數。
與C 相比,Go不包括如枚舉、異常處理、繼承、泛型、斷言、虛函數等功能,但增加了切片(Slice) 型、並發、管道、垃圾回收、介面(Interface)等特性的語言級支援。 Go 2.0版本將支援泛型,對於斷言的存在,則持負面態度,同時也為自己不提供類型繼承來辯護。
不同於Java,Go內嵌了關聯數組(也稱為哈希表(Hashes)或字典(Dictionaries) ),就像字串類型一樣
1、簡單又有效率:幾乎所有主流的程式語言如Java、C 、PHP、Python、JavaScript等等都是可以用於服務端開發的,Go語言作為後起之秀,在語言層面具備文法簡潔、執行效率高(底層語言)的特性;相較之下,Java和Python、PHP都顯得低效,C 則太過麻煩,而Go則可以做到簡單與高效兼顧;
#2、高併發:Go語言是主打並發、為並發而生的,其出發點即是瞄準大數據雲端運算時代背景下的高並發、分散式應用場景;
3、跨平台:可以在不同平台直接編譯生成可執行程序,基礎內存佔用很少,小應用佔用幾M大型應用佔用個幾十M就能很好運行,這使得golang可以在樹莓派之類的小設備上很好的運行,這點表現比java要好的多;
容器化、分散式、微服務化是服務端發展的潮流,在這幾個方向上:
1、容器化:容器領域Go語言是絕對的霸主,大家所熟知的Docker和Kubernets(K8S)就是使用Go語言開發的;
2、分散式:最好的例證是以太坊,因為區塊鏈即分散式帳本;
3、微服務:Go語言支援微服務的最佳例證是今日頭條,今日頭條當前後端服務超過80%的流量是跑在Go 建構的服務上。微服務數量超過100個,高峰 QPS 超過700萬,每日處理請求量超過3000億,可能是業界最大規模的Go應用。
Go語言作為後端語言,跟其他後端語言相比,Go有什麼優勢或特徵呢?
語言層面支援並發,這個就是Go最大的特色,很容易編寫多執行緒程序,可以充分的利用多核心。
作為出生在21世紀的程式語言,支援垃圾回收,跟Java一樣不需要開發人員管理內存,可以專注於業務實現。
豐富的標準函式庫,Go內建了大量的函式庫,特別是網路庫非常強大。
Go 語言的部署比較簡單,直接編成機器碼,而且還有跨平台的編譯的選項。
Go語言的概念是“少即是極多”,相對於C ,Java來說,Go語言更容易上手。
在Go中有幾項規定,當不符合以下規定時編譯將會產生錯誤。
每行程式結束後不需要撰寫分號。
左大括號不能夠換行放置。
if判斷式和for迴圈不需要以小括號包覆起來。
Go也有內建gofmt工具,能夠自動整理程式碼多餘的空白、變數名稱對齊、並將對齊空格轉換成Tab。 【相關推薦:Go影片教學】
目前有兩個Go編譯器分支,分別為官方編譯器gc和gccgo。官方編譯器在初期使用C寫成,後來用Go重寫實現自舉。 Gccgo是一個使用標準GCC作為後端的Go編譯器。
官方編譯器支援跨平台編譯(但不支援CGO),允許將原始程式碼編譯為可在目標系統、架構上執行的二進位檔案.
Go語言成功案例
1、Docker(容器)
到現在,Docker幾乎是Go再難找到也難以複製的一個成功案例。 Docker專案在2014年9月就拿到了C輪4000萬美元融資,版本迭代速度超快,目前從GitHub看到已有78個版本,而它僅是再2013年初才正式開始的一個專案而已。目前,國內Docker技術推廣也進行的如火如荼,例如 Docker中文社區,CSDN也建立了 Docker專區。 Docker團隊之所以喜歡用Go語言,主要是Go具有強大的標準函式庫、全開發環境、跨平台建置的能力。
2、Kubernetes(容器)
Kubernetes是2014年夏天Google推出的Kubernetes,基於Docker,其目的是讓用戶透過Kubernetes叢集來進行雲端容器叢集的管理,而無需用戶進行複雜的設定工作。系統會自動選取適當的工作節點來執行特定的容器叢集調度處理工作。其核心概念是Container Pod(容器倉)。
3、Etcd & Fleet(分散式資料庫)
etcd是由CoreOS開發並維護鍵值儲存系統,它使用Go語言編寫,並透過Raft一致性演算法處理日誌複製以保證強一致性。目前,Google的容器叢集管理系統Kubernetes、開源PaaS平台Cloud Foundry和CoreOS的Fleet都廣泛使用了etcd。 Fleet則是分散式的初始化系統。它們之所以選擇使用Go語言,則是因為Go語言對跨平台的良好支持,以及背後強大的社群。
4、Deis(雲端服務平台)
Deis是一個基於Docker和CoreOS的開源PaaS平台,旨在讓部屬和管理伺服器上的應用變得輕鬆容易。它可以運行在AWS、GCE以及Openstack平台下。
5、Flynn(雲端服務平台)
Flynn是一個使用Go語言編寫的開源PaaS平台,可自動建置部署任何應用到Docker容器叢集上運行。 Flynn計畫受到Y Combinator的支持,目前仍在開發中,被稱為是下一代的開源PaaS平台。
6、Lime(桌面應用程式)
相對上面的幾款Go語言在雲端和伺服器端之外,Lime則顯得比較特殊。 Lime則是一款用Go語言寫的桌面編輯器程序,被看做是著名編輯器Sublime Text的開源實作。
7、Revel(Web架構)
Revel是高生產力的Go語言Web架構。 Revel框架支援熱編譯,當編輯、儲存和刷新原始碼時,Revel會自動編譯程式碼和模板;全端特性,支援路由、參數解析、快取、測試、國際化等功能。
8、InfluxDB(分散式資料庫)
一個Go語音編寫的開源分散式的時序、事件和指標資料庫,無需外部依賴。其設計目標是實現分散式和水平伸縮擴展。
9、.Syncthing(雲端碟)
一款用Go語言寫的開源雲端儲存和同步服務工具,使用者的資料將由自己完全控制,所有的通訊全都加密,每個存取節點都用加密憑證驗證。該專案被認為是Dropbox和 BitTorrent Sync的開源替代,Syncthing之所以選擇Go語言,也是出於跨平台考慮。
10、Gogs(自助Git服務)
Gogs則是一款由國人無聞( GitHub)開發的自助Git服務專案。 Gogs的目標是打造一個最簡單、最快速、最輕鬆的方式來建立自助Git服務。據作者稱,之所以選擇使用Go語言開發,就是Go允許Gogs可以透過獨立的二進位分發,且對跨平台有良好支援。
更多程式相關知識,請造訪:程式設計影片! !
以上是go語言是後端語言嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!