golang 個人筆記和心得

淺談 golang

go 在2007年9月開始為 google 內部員工的 20% 自由時間的實驗項目, 目的為改善公司內部的開發速度. 隔了一年受到 google 公司的重視和支持, 2009年11 月對外發佈第一版本. 過去 google 常用的語言有 c , java , python來開發他們的服務. 但是這些語言是在創造的時候的硬體環境, 和現在有很大的不同. 而 golang 在設計的時候就考慮了這些架構, 所以在開發上和過去的語言比較起來有很大的優勢.

他有幾個特點

語法簡潔

go的關鍵字不多(目前約25個 c 37個,c++ 84個而且還在增加中), 學習上很容易上手, 再加上有不少和 c 的關鍵字重複, 所以如果你原本就是寫c/c++的人, 在轉換上會相對其他語言容易.

效能

平均下來效能是輸c, 可是贏其他語言如 ruby(ror), php, java, python等語言. 主要原因的先天優勢是, 他語言架構設計非常單純, 並不像是如物件導向語言這麼的大. 再來是他不是直譯語言. 光是這兩點優勢, 讓他有更好的體質去有較好的執行效率. 已經有很多案例, 在開發伺服器的軟體時, 因為效能問題而改換 go 去寫, 結果讓他們減少了伺服器的數量就可以達到原本的效能, 增加了服務的效率也省下了硬體成本.

goroutine

這是go的最大特色之一, thread 的使用是非常消耗系統資源的, 而且當你使用越來越多時管理上也越困難. 而 goroutine 有輕巧低消耗資源的特性, 而這優點在於系統資源的消耗也會比較少.

可以使用 c library

他可以使用 c library, 解決新語言在 library 上的不足. 不過基本上 go 本身的 lib 已經很豐富了. Unicode slice map 都有支援.

目前越來越多公司用 go 來寫他們網站後端的系統, 過去 google 在寫他的服務大多使用 c + python, python 是個很簡潔的語言在建構服務是非常快的, c 是用來解決效能上的問題, 現在內部也都慢慢轉成 go 來寫. 在2014年TIOBE四月程式語言排名已經到第30名, 2013基本上都是在50名以外, 而且我相信這名次會持續在進步.

第一個 go 程式

package main
import "fmt"

func main () { 

   fmt.Println("Hello , World!")


}