Golang環境安裝和依賴管理

來源:互聯網
上載者:User

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包管理的流程

  • solving功能,它將當前項目中的匯入包和Gopkg.toml中的規則作為輸入,不可變的依賴關係圖作為傳遞完成後的輸出,形成Gopkg.lock。

  • vendor功能,將Gopkg.lock中的資訊作為輸入,確保項目編譯時間能使用在Gopkg.lock檔案中鎖定的版本。

使用如下命令添加依賴

dep ensure -add [github.com/gin-gonic/gin](http://github.com/gin-gonic/gin)

使用如下命令更新Gopkg.lock

dep ensure -update

歡迎關注知乎專欄【Golang私房菜】

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.