這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
Golang介紹與環境安裝
Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself some Gin.
Gin是用Golang開發的一個微架構,類似Martinier的API,重點是小巧、易用、效能好很多,也因為 httprouter 的效能提高了40倍。
準備環節
一、安裝Golang
首先,根據對應的作業系統選擇安裝包下載,
在這裡我使用的是Centos 64位系統
wget https://studygolang.com/dl/golang/go1.9.2.linux-amd64.tar.gztar -zxvf go1.9.2.linux-amd64.tar.gzmv go/ /usr/local/
配置 /etc/profile
vi /etc/profile
添加環境變數GOROOT和將GOBIN添加到PATH中
export GOROOT=/usr/local/goexport PATH=$PATH:$GOROOT/bin
添加環境變數GOPATH(這個可按實際情況設定目錄位置)
export GOPATH=/usr/local/go/path
配置完畢後,執行命令令其生效
source /etc/profile
在控制台輸入go version,若輸出版本號碼則安裝成功
那麼大家會有些疑問,糾結go本身有什麼東西,我們剛剛設定的環境變數是什嗎?
go本身有什麼東西
首先,我們在解壓的時候會得到一個名為go的檔案夾,其中包括了所有Go語言相關的一些檔案,在這下面又包含很多檔案夾和檔案,我們來簡單說明其中主要檔案夾的作為:
- api:用於存放依照
Go版本順序的API增量列表檔案。這裡所說的API包含公開的變數、常量、函數等。這些API增量列表檔案用於Go語言API檢查
- bin:用於存放主要的標準命令檔案(可執行檔),包含
go、godoc、gofmt
- blog:用於存放官方部落格中的所有文章
- doc:用於存放標準庫的HTML格式的程式文檔。我們可以通過
godoc命令啟動一個Web程式展示這些文檔
- lib:用於存放一些特殊的庫檔案
- misc:用於存放一些輔助類的說明和工具
- pkg:用於存放安裝
Go標準庫後的所有歸檔檔案(以.a結尾的檔案)。注意,你會發現其中有名稱為linux_amd64的檔案夾,我們稱為平台相關目錄。這類檔案夾的名稱由對應的作業系統和計算架構的名稱組合而成。通過go install命令,Go程式會被編譯成平台相關的歸檔檔案存放到其中
- src:用於存放
Go自身、Go標準工具以及標準庫的所有源碼檔案
- test:存放用來測試喝驗證
Go本身的所有相關檔案
- 剛剛設定的環境變數是什麼
- GOROOT:
Go的根目錄
- GOPATH:使用者工作區
- PATH下增加$GOROOT/bin:
Go的bin下會存放可執行檔,我們把他加入PATH中就可以直接在命令列使用
- 工作區是什嗎?
這在Go中是一個非常重要的概念,在一般情況下,Go源碼檔案必須放在工作區中,也就是說,我們寫的項目代碼都必須放在我們所設定的工作區中,雖然對於命令源碼檔案來說,這不是必須的。但我們大多都是前一種情況。工作區其實就是一個對應特定工程的目錄,它應包含3個子目錄:src目錄、pkg目錄、bin目錄
- src:用於以程式碼封裝的形式組織並儲存Go源碼檔案
- pkg:用於存放通過
go install命令安裝後的程式碼封裝的歸檔檔案(.a 結尾的檔案)
- bin:與pkg目錄類似,在通過
go install命令完成安裝後,儲存由Go命令源碼檔案產生的可執行檔
- 什麼是命令源碼檔案?
如果一個源碼檔案被聲明屬於main程式碼封裝,且該檔案代碼中包含無參數聲明喝結果聲明的main函數,則它就是命令源碼檔案。命令源碼檔案可通過go run命令直接啟動運行
二、安裝Govendor
If using go1.5, ensure GO15VENDOREXPERIMENT=1 is set.
在命令列下執行安裝
go get -u github.com/kardianos/govendor
等待一會,安裝成功後。
我們cd /usr/local/go/path(第三方依賴包,會預設安裝在GOPATH的第一個目錄下)目錄,
執行ls,可以在工作區中看到bin、pkg、src三個目錄。這就是我們上面一小節所說的工作區了!
那麼,我們所安裝的govendor去哪裡了呢?
答案就在工作區內,所產生的程式碼包大概是這樣。我們所需要的是編譯好的可執行檔,在/usr/local/go/path/bin中。
path/├── bin│ └── govendor├── pkg│ └── linux_amd64│ └── github.com│ └── kardianos│ └── govendor│ ├── ...└── src └── github.com └── kardianos └── govendor ├── ...
大家還記得我們先前在環境變數PATH中設定了GOBIN,
我們現在要做的就是把工作區中bin目錄下的可執行檔govendor給移動過去,或者你可以將$GOPATH的BIN目錄給加入環境變數中
那樣就可以直接在命令列直接執行govendor了
mv /usr/local/go/path/bin/govendor /usr/local/go/bin/
移動成功後,在命令列執行govendor -version,若出現版本號碼,則成功
#govendor -version$ v1.0.9
在這裡為什麼單獨挑出一節來講govendor呢?
大家可以想想,雖然我們在本地開發,利用$GOPATH達到安裝第三方依賴包,然後去使用他,似乎也沒有什麼問題。
但是在實際的多人協作及部署中是有問題的
- 每一個新來的人都要
go get很多次
- 拉下來的版本還可能不一樣
- 線上部署更麻煩了
因此我們在這簡單的使用govendor來解決這個問題,在這個項目完成的最後,你只需govendor init再govendor add +external就能美滋滋的把依賴包都放到項目的vendor目錄中,就能把它一同傳上你的版本庫裡了,是不是很方便呢。
當然了,目前官方推薦的包管理工具就有十幾種,大家可以適當考察一下,這個不在本篇的範圍內。
三、安裝Gin
在命令列下執行安裝
go get -u github.com/gin-gonic/gin
檢查/usr/local/go/path中是否存在gin的程式碼封裝
四、測試Gin是否安裝成功
編寫一個test.go檔案
package mainimport "github.com/gin-gonic/gin"func main() { r := gin.Default() r.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "pong", }) }) r.Run() // listen and serve on 0.0.0.0:8080}
執行test.go
go run test.go
訪問$HOST:8080/ping,若返回{"message":"pong"}則正確
curl 127.0.0.1:8080/ping
至此,我們的環境安裝都基本完成了:)
參考
本系列範例程式碼
相關文檔
- Gin
- Gin Web Framework
- Go並發編程實戰
- govendor