關於go mod 的使用和goland 配置 go mod

1、關於go modules

  • 1.1 go modules 是go1.11 新加的特性 如今已有go 1.13.4 了本人用了就是最新版的
  • 1.2關於modules 官方定義
模塊是相關Go包的集合。modules是源代碼交換和版本控制的單元。 go命令直接支持使用modules,包括記錄和解析對其餘模塊的依賴性。modules替換舊的基於GOPATH的方法來指定在給定構建中使用哪些源文件。
  • 1.3 使用modules 的配置
    • 配置GO111MODULE GO111MODULE 有三個值 off , on,auto
GO111MODULE=off,go命令行將不會支持module功能,尋找依賴包的方式將會沿用舊版本那種經過vendor目錄或者GOPATH模式來查找。
GO111MODULE=on,go命令行會使用modules,而一點也不會去GOPATH目錄下查找。
GO111MODULE=auto,默認值,go命令行將會根據當前目錄來決定是否啓用module功能。這種狀況下能夠分爲兩種情形:
  • 1.4 本人配置 export GO111MODULE=auto
由於之前沒有使用 ,將來兼容之前的項目,暫設成auto

2、go mod 的一些命令

命令 說明
download download modules to local cache(下載依賴包)
edit edit go.mod from tools or scripts(編輯go.mod
graph print module requirement graph (打印模塊依賴圖)
init initialize new module in current directory(在當前目錄初始化mod)
tidy add missing and remove unused modules(拉取缺乏的模塊,移除不用的模塊)
vendor make vendored copy of dependencies(將依賴複製到vendor下)
verify verify dependencies have expected content (驗證依賴是否正確)
why explain why packages or modules are needed(解釋爲何須要依賴)

3、如何使用 go mod

  • 3.1 簡單使用
mkdir hello
cd hello 
go mod init hello 
# 此時會出現一個hello下會出現一個 go.mod 目錄
# 須要下載 全部第三方包時 go mod download
# 下載第三包能夠直接使用 go get need_pkg
# 下載好的依賴 和 版本 會加入到 go.mod 裏面,
# 下載好的第三包 會放在到$GOPATH/pkg/mod 中
# 沒有設置GOPATH的話 下載好的第三方包會放在~/go/pkg/mod
# 若是你想放在當前目前能夠執行以下命令
go mod vendor    
# 此時你的包就會出如今vendor下了,意思是將依賴包放在vendor中
  • 3.2 關於依賴升級
go list -m -u all 來檢查能夠升級的package
go get -u  升級全部依賴
go get -u need-pack 升級指定的依賴
  • 3.3 關於依賴打包
go build  -ldflags="-s -w" -o app ./main.go
# -ldflags="-s -w" 壓縮程序
  • 3.4 github 拉取 他人含有go.mod的項目時,下載全部第三方包
go mod download
  • 3.5 關於如何使用自定義包
hello
    |--conf
        |-conf.go
    |-main.go
    |-go.mod
如何導入conf 包呢?
先查看go.mod 中的module 後的定義的module_name
在導入時  直接使用module_name/conf   便可

先查看go.mod中的module_name module_name/pkc

4、goland的配置

goland 升級到最新的,舊的goland 版本時不支持go mod,
在preferences -> go -> Go Modules(vgo) 
給Enable Go Modules (vgo) Integration 打勾勾就行

modules 設置

上圖的那個圈起來的地方必定要勾上,
Enable Go Modules(vgo)   啓用modules 模式

verdoring mode  會使用vendor 文件夾中的包(不用打勾,打勾意味着依賴包都使用vendor 目錄裏面的.)
相關文章
相關標籤/搜索