這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
Go語言優勢:
•靜態語言,強型別。靜態編譯能幫我們檢查出來大量的錯誤,go的強型別甚至變態到不支援隱式的類型轉換。
•gofmt,應該這是我知道的第一個官方提供統一格式化代碼工具的語言了。有了gofmt,大家的代碼長一個樣了,也就沒有花括弧到底放到結尾還是新開一行這種蛋疼的代碼風格討論了。因為大家的代碼風格一樣,所以看go的代碼很容易。
•天生的並行支援,因為goroutine以及channel,用go寫分布式應用,寫並發程式異常的容易。沒有了蛋疼的callback導致的代碼邏輯割裂,代碼邏輯都是順序的。 •效能,go的效能可能趕不上c,c++以及openresty,但真的也挺強悍的。在我們的項目中,現在單機就部署了一個go的進程,就完全能夠勝任以前200個python進程乾的事情,而且CPU和MEM佔用更低。
•營運部署,直接編譯成二進位,扔到伺服器上面就成,比python需要安裝一堆的環境那是簡單的太多了。當然,如果有cgo,我們也需要將對應的動態庫給扔過去。
•開發效率,雖然go是靜態語言,但我個人感覺開發效率真的挺高,直覺上面跟python不相上下。對於我個人來說,最好的例子就是我用go快速開發了非常多的開源組件,譬如ledisdb,go-mysql等,而這些最開始的版本都是在很短的時間裡面完成的。
需要注意的地方:
1.整型資料的溢出; 一個int8型整數的最大值是127,如果在加上一就是-128. 2.特殊類型:複數: 複數實際上由兩個浮點數構成,一個表示實部,一個表示虛
部。 3.Go語言規定,函數,控制結構等的左大括弧“{”必須和函式宣告
或控制結構放在同一行。如果將左大括弧放在函式宣告,控制語句的
下一行,編譯器會在左大括弧的前方自動加一個大括弧,可能導致程
序異常。 4.Go對多語言的支援。 5.函數名首字母為小寫,即為private 函數名首字母為大寫,即為public