go語言快速入門學習時需要注意什麼?
對於Go語言,很多人善於利用GO語言進行開發,但並不是所有的人都喜歡Go語言,那go到底與其他語言有什麼區別?它自己的優勢在哪裡?
部署簡單。Go 編譯生成的是一個靜態可執行檔案,除了 glibc 外沒有其他外部依賴。這讓部署變得異常方便:目標機器上只需要一個基礎的系統和必要的管理、監控工具,完全不需要操心應用所需的各種包、庫的依賴關係,大大減輕了維護的負擔。這和 Python 有著巨大的區別。由於歷史的原因,Python 的部署工具生態相當混亂【比如 setuptools, distutils, pip, buildout 的不同適用場合以及相容性問題】。官方 PyPI 源又經常出問題,需要搭建私有映象,而維護這個映象又要花費不少時間和精力。
併發性好。Goroutine 和 channel 使得編寫高併發的服務端軟體變得相當容易,很多情況下完全不需要考慮鎖機制以及由此帶來的各種問題。單個 Go 應用也能有效的利用多個 CPU 核,並行執行的效能好。這和 Python 也是天壤之比。多執行緒和多程式的服務端程式編寫起來並不簡單,而且由於全域性鎖 GIL 的原因,多執行緒的 Python 程式並不能有效利用多核,只能用多程式的方式部署;如果用標準庫裡的 multiprocessing 包又會對監控和管理造成不少的挑戰【我們用的 supervisor 管理程式,對 fork 支援不好】。部署 Python 應用的時候通常是每個 CPU 核部署一個應用,這會造成不少資源的浪費,比如假設某個 Python 應用啟動後需要佔用 100MB 記憶體,而伺服器有 32 個 CPU 核,那麼留一個核給系統、執行 31 個應用副本就要浪費 3GB 的記憶體資源。
良好的語言設計。從學術的角度講 Go 語言其實非常平庸,不支援許多高階的語言特性;但從工程的角度講,Go 的設計是非常優秀的:規範足夠簡單靈活,有其他語言基礎的程式設計師都能迅速上手。更重要的是 Go 自帶完善的工具鏈,大大提高了團隊協作的一致性。比如 gofmt 自動排版 Go 程式碼,很大程度上杜絕了不同人寫的程式碼排版風格不一致的問題。把編輯器配置成在編輯存檔的時候自動執行 gofmt,這樣在編寫程式碼的時候可以隨意擺放位置,存檔的時候自動變成正確排版的程式碼。此外還有 gofix, govet 等非常有用的工具。
執行效能好。雖然不如 C 和 Java,但通常比原生 Python 應用還是高一個數量級的,適合編寫一些瓶頸業務。記憶體佔用也非常省。
隨著Go語言自身的逐漸最佳化及Go語言社群的不斷髮展壯大,相信go一定會擁有廣闊的未來。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952968/viewspace-2664846/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 剛入門學習GO語言需要注意什麼?有哪些框架?Go框架
- Go語言快速入門Go
- 新媒體學習時需要注意什麼?新媒體入門
- go語言快速入門教程Go
- 為什麼我們需要一門新語言——Go語言Go
- GO 語言快速開發入門Go
- 為什麼那麼多人要學習go語言?go語言有什麼特點?Go
- golang 快速入門 [3]-go 語言 helloworldGolang
- Go語言快速入門筆記01Go筆記
- Go語言程式設計快速入門Go程式設計
- 為什麼要學習Go語言呢?Go
- go與其他語言有什麼區別?學習go語言怎麼樣Go
- golang 快速入門 [1]-go 語言導論Golang
- 什麼是linux?學習linux需要什麼語言?Linux
- 什麼是linux?Linux需要學習什麼語言?Linux
- 為什麼要學習Python語言?Python入門Python
- 剛開始學go要注意啥?go入門學習Go
- go 語法快速入門Go
- 什麼是Go語言?Go語言有什麼特點?Go
- Go是一門什麼樣的語言?Go
- R語言快速入門R語言
- Groovy 語言快速入門
- Swift語言快速入門Swift
- 非常適合小白入門的Go語言學習路線Go
- Dart程式語言入門學習Dart
- 15個快速學習蘋果Swift程式語言的入門教程蘋果Swift
- go語言學習Go
- 如何快速入門一門語言
- 學習Python需要注意什麼?如何學習Python?Python
- go語言能做什麼Go
- [翻譯] Go 語言入門Go
- ChainDesk : Go 語言入門指南AIGo
- DevOps工程師需要學習Go語言? - iximiuzdev工程師Go
- 為什麼要學習一門新的程式語言?
- SQL語言快速入門(轉)SQL
- Go語言開發的微服務框架有什麼專案?go學習Go微服務框架
- 【Go語言入門系列】(八)Go語言是不是面嚮物件語言?Go物件
- Go語言學習——mapGo