為什麼學習go語言程式設計?
1. 從python開發角度看go語言
(1)部署簡單:Go 編譯生成的是一個靜態可執行檔案,除了 glibc 外沒有其他外部依賴。完全不需要操心應用所需的各種包、庫的依賴關係,大大減輕了維護的負擔。
(2)併發性好。Goroutine 和 channel 使得編寫高併發的服務端軟體變得相當容易,很多情況下完全不需要考慮鎖機制以及由此帶來的各種問題。
(3)良好的語言設計。Go 的設計是非常優秀的:規範足夠簡單靈活。
(4)執行效率高。雖然不如 C 但是已經超過C++和java,和解釋型語言相比,更是相差一個數量級,比如python,ruby。
備註:
編譯型語言:在程式執行之前,有一個單獨的編譯過程,將程式翻譯成機器語言,以後執行這個程式的時候,就不用再進行翻譯了。
解釋型語言
2.從C/C++角度看Go語言
(1)GO語言優勢:使用C/C++開發的最大問題在於開發效率低。Go語言開發效率高。簡單來講,使用Go語言寫一個chan型別,使用C/C++完成需要很多工作量,使用C++會稍微方便一點,但是也是相當痛苦一件事。
(2)GO語言優勢:libc只向後相容,運維難度偏大。
(3)GO語言劣勢:GO語言執行速度並沒有C語言執行速度快。這也是需要提高地方。但是明顯高於C++,在一般企業來看,這點執行效率和開發速度比起來,不足以考慮。
3.從GO語言自身看
(1)可直接編譯成機器碼,不依賴其他庫,glibc的版本有一定要求,部署就是扔一個檔案上去就完成了。
(2)靜態型別語言。執行效率高。
(3)語言層面支援併發,這個就是Go最大的特色,天生的支援併發。
(4)內建runtime,支援垃圾回收,這屬於動態語言的特性之一吧,因此開發效率高,但是沒有丟失執行效率,這是很可貴的地方。
(5)簡單易學,Go語言的作者都有C的基因,那麼Go自然而然就有了C的基因,那麼Go關鍵字是25個,但是表達能力很強大,幾乎支援大多數你在其他語言見過的特性:繼承、過載、物件等。
(6)豐富的標準庫,Go目前已經內建了大量的庫,特別是網路庫非常強大。
(7)內建強大的工具,Go語言裡面內建了很多工具鏈,最好的應該是gofmt工具,自動化格式化程式碼,能夠讓團隊review變得如此的簡單,程式碼格式一模一樣,想不一樣都很困難。
(8)跨平臺編譯,如果你寫的Go程式碼不包含cgo,那麼就可以做到window系統編譯linux的應用。
(9)內嵌C支援,前面說了作者是C的作者,所以Go裡面也可以直接包含c程式碼,利用現有的豐富的C庫。
(10)有望成為Google下一代的統一開發平臺,徹底擺脫Java的陰影。
3.Go適合用來做什麼
(1)伺服器程式設計,以前你如果使用C或者C++做的那些事情,用Go來做很合適,例如處理日誌、資料打包、虛擬機器處理、檔案系統等。
(2)分散式系統,資料庫代理器等
(3)網路程式設計,這一塊目前應用最廣
(4)雲平臺,目前國外很多雲平臺在採用Go開發