Golang一種靜態強型別、編譯型、並髮型,並具有記憶體回收功能的程式設計語言。Golang提供了方便的安裝包,支援Windows、Linux、Mac系統。
下載安裝包
Golang的官網是https://golang.org/,如果官網打不開,可以訪問https://golang.google.cn/這個網域名稱。在官網點擊Download Go會進入下載頁,可以看到這裡提供了針對各個系統的安裝包,也提供了源碼,可以下載源碼編譯安裝。
下載運行安裝包後,在terminal中執行go env命令,如果出現下面的輸出說明已經安裝成功。
GOROOT與GOPATH
仔細看上面的輸出,會發現其中有一個GOPATH,又有一個GOROOT,那麼到底哪個才是Golang的運行環境呢。
首先訪問一下GOROOT這個路徑,會發現其中包含bin、lib等檔案夾。GOROOT就是Golang的安裝路徑,其中包含Golang編譯、工具、標準庫等,在安裝後就會存在。
和GOROOT不同,GOPATH是工作空間路徑,從go 1.8開始,如果GOPATH沒有被設定,會有一個預設值,在Unix上為$HOME/go,在Windows上為%USERPROFILE%/go,當調用go build時,它會在GOPATH中尋找源碼。訪問一下GOPATH這個路徑,會發現其中只有pkg、bin、src三個檔案夾,並且裡面基本是空的,這是一個約定的目錄結構,src檔案夾用來存放源碼、pkg存放編譯後產生的檔案,bin存放編譯後產生的可執行檔。項目代碼需要在GOPATH/src路徑下。
GOPATH路徑下出了存放項目代碼,還存放所有通過go get安裝的依賴,項目代碼和依賴代碼是平級的,當各個項目都有很多依賴的時候,這個GOPATH路徑下的代碼量會多的嚇人,並且難以拆分。
Vendor
2015年,Go 1.5加入了一個實驗性的vendor機制(到2016年的Go 1.6版變為預設開啟),vendor機制就是在項目中加入了vendor檔案夾,用於存放依賴,這樣就可以將不同項目的依賴隔離開。
當使用go run或者go build命令時,會首先從當前路徑下的vendor檔案夾中尋找依賴,如果vendor不存在,才會從GOPATH中尋找依賴。
然而我們安裝依賴通常使用go get或者go install命令,這兩個命令依舊會把依賴安裝到GOPATH路徑下。
包管理工具dep
Vendor只是go官方提供的一個機制,但是包管理的問題依然沒有解決,並且也沒有對依賴進行版本管理。如果要實現上述的功能,還需要藉助包管理工具。
Go官方給出了包管理工具的對比:https://github.com/golang/go/wiki/PackageManagementTools
dep是官方的實驗性包管理工具,可以通過如下指令碼安裝
curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
安裝完成後,進入項目路徑,執行
dep init
項目中會出現兩個檔案一個目錄
Gopkg.tomlGopkg.lockvendor
dep包管理的流程
使用如下命令添加依賴
dep ensure -add [github.com/gin-gonic/gin](http://github.com/gin-gonic/gin)
使用如下命令更新Gopkg.lock
dep ensure -update
歡迎關注知乎專欄【Golang私房菜】