Go語言-概況與安裝
阿新 • • 發佈:2018-11-12
機緣巧合,需要使用基於Go語言的開源專案,發現Go語言的開發效率和某些特性讓我的開發工作變得輕鬆不少,因此學習了一些Go語言的知識,在實際工作中也用Go寫了一點東西。
為節省時間,這裡摘要一些學習心得和實際體會,注重簡短易讀,方便快速瀏覽複習。
主要參考
- 《the way to go》,https://github.com/Unknwon/the-way-to-go_ZH_CN
- 《Go程式設計》
1. Go語言概況
1.1 設計
- 編譯快
- 執行快
- 開發簡單
高效需要靜態語言特性,開發簡單需要動態語言特性,所以Go是結合動靜兩種語言的特性來設計的。
1.2 適用方向
- 網路通訊
- 併發/並行程式設計
對於分散式和多核計算機特別適用。關鍵特性是gotoutine和channel。
後端的Web伺服器,高效能分散式系統,遊戲服務端的海量並行,都可以從Go語言特性中受益。
其他的諸如文字處理,前端呈現,指令碼,都可以用Go搞一搞。
有垃圾回收和自動記憶體分配功能,所以實時性要求很高的軟體慎用。
1.3 安裝準備
1.3.1 Linux上安裝Go
偷個懶就直接用yum或者apt安裝了:
yum install golang
或者
apt-get install golang
1.3.2 環境變數
環境變數 | 說明 |
---|---|
GOROOT | go語言的安裝位置,比如 $HOME/go |
GOARCH | 386, amd64或者arm |
GOOS | darwin, freebsd, linux, windows |
GOBIN | 一般就是 $GOROOT\bin,可以留空 |
GOPATH | 一般在哪個目錄下工作,就設定到哪裡,其中會src, pkg和bin這幾個固定的目錄,後續專案結構部分會有更細緻介紹 |
GOMAXPROCS | 設定程式可以使用的處理器個數和核數 |
1.3.3 Windows上安裝Go
可以下載windows版本的Go語言安裝檔案,因為牆的存在,可以從Go語言中文網的下載頁面去下載。
按照預設安裝即可。
在命令列中試驗命令:
go version
檢視安裝是否成功,windows使用可以配合IDE或者直接文字編輯器+powershell,也是挺方便的。
1.4 其他概念
1.4.1 執行時
Go是有執行時的,跟JVM差不多,會做記憶體分配,垃圾回收,棧處理,goroutine,channel,slice,map和relfection等等工作。
執行時從Go 1.5開始是自舉的。有興趣可以看程式碼 $GOROOT/src/tuntime。
Go可執行檔案一般比較大,說明Go的執行時都嵌入到可執行檔案中了,這點非常好,雖然檔案大一點,但是整潔很多,只要一個檔案就可以跑了,不需要搞複雜的執行環境等等蛋疼的問題。
1.4.2 IDE和除錯
選一個編輯器,比如我用Notepad++,再加上一個LiteIDE就可以了。
除錯不完善,與其跟偵錯程式作鬥爭,不如多打點log就完事了。
print
println
fmt.Print
fmt.Println
fmt.Printf //%+v:包括欄位的例項資訊;%#v:包括欄位和限定型別名稱的例項資訊;%T 某個型別的完整說明
panic可以獲取棧跟蹤資訊。