Go語言 包管理

2021-10-12 15:59:57 字數 1717 閱讀 8374

go語言通過包管理來封裝模組和復用**,這裡我們只介紹go modules管理方法

go modules於go語言1.11版本時引入,在1.12版本正式支援,是由go語言官方提供的包管理解決方案

modules是相關go包的集合,是源**交換和版本控制的單元。go命令直接支援使用modules,包括記錄和解析對其他模組的依賴性

首先需要設定環境變數,可以使用go env命令檢視當前配置。

$ go env

go111module=

"auto"

goproxy=

""gonoproxy=

""gosumdb=

"sum.golang.org"

gonosumdb=

""goprivate=

""

如果需要更改 go111module ,可以使用go env命令

go env -w go111module=on

go111module

auto:只要專案包含了 go

.mod 檔案的話啟用 go modules,目前在 go1.

11 至 go1.

14 中仍然是預設值。

goproxy

此環境變數主要用於設計go module的**

gosumdb
此環境變數用於在拉取模組的時候保證模組版本資料的一致性。

go modules的使用方法比較靈活,在目錄下包含go.mod檔案即可

首先通過如下命令建立乙個新的module

go mod init [module name]
然後當前目錄會生成go.mod檔案,其內容為:

module modulename
go 1.15

go modules會自動管理包,如果需要引入依賴,只需要在go.mod下新增以下內容(以gorose為例子)

0.5)go get 命令用於拉取新的依賴,以下為go get命令具體用法

go get 拉取依賴,會進行指定性拉取(更新),並不會更新所依賴的其它模組。

go get -u 更新現有的依賴,會強制更新它所依賴的其它全部模組,不包括自身。

go get -u -t ./… 更新所有直接依賴和間接依賴的模組版本,包括單元測試中用到的。

其他引數

-f 只有在你包含了 -u 引數的時候才有效,不讓 -u 去驗證 import 中的每乙個都已經獲取了,這對於本地 fork 的包特別有用

-fix 在獲取原始碼之後先執行 fix,然後再去做其他的事情

-u 強制使用網路去更新包和它的依賴包

-v 顯示執行的命令

go mod init  // 初始化go.mod

go mod tidy // 更新依賴檔案

go mod vendor // 將依賴轉移至本地的vendor檔案

go mod edit // 手動修改依賴檔案

go mod graph // 檢視現有的依賴結構

go mod verify // 校驗依賴

go語言包管理

要構建go語言的編譯環境,首先得安裝go語言的編譯工具 官方路徑 一般是訪問不了,使用國內 然後需要設定環境變數 在windows下需要將go編譯器的安裝路徑加到path,還要設定goroot和gopath變數,分別對應go安裝目錄和專案下的src目錄。go包管理一般有兩種方式 gopath方式和g...

go語言包管理工具glide介紹

glide是golang的包管理工具,是為了解決golang依賴問題的。為什麼需要glide?原因很簡單,go 語言原生包管理的缺陷。羅列一下golang的 get 子命令管理依賴有很多大缺陷 go install github.com masterminds glide初始化之前需要先進入到專案目...

go語言的包管理

在各種語言中都引入了包管理的思想,它有什麼作用呢?在go語言安裝一文中提到go語言的工作空間的概念 import fmt import github.com gin gonic gin 以上 是在 中匯入了兩個包,乙個內建包,乙個第三方包.這裡的import後是乙個包相對於 gopath src的相...