Go包管理工具Module介紹

一、Go Modules

1. 介紹

Go modules是官方提供的go包管理工具,用於解決go包管理和依賴問題;從Go1.11開始引入,到現在Go1.14已經比較完善,Go1.16已經全面推薦使用,並且默認爲開啓;Go Modules類似於JS的NPM,Java的maven和gradle。

  • GO111MODULE=off: 不使用 modules 功能。
  • GO111MODULE=on: 使用 modules 功能,不會去 GOPATH 下面查找依賴包。
  • GO111MODULE=auto: Golang 自己檢測是不是使用 modules 功能。
  • 計劃在 Go1.17 中放棄對 GOPATH將忽略 GO111MODULE,需要關注默認下載目錄如何設置,此特性靜觀1.17版本發佈;

2. 關於go.mod

go.mod是Go項目的依賴描述文件:

module hello

go 1.14

require github.com/gogf/gf v1.15.3
  1. module是配置項目名稱

  2. go配置的是使用的golang版本

  3. require配置引用第三方依賴包路徑和版本,latest表示最新版本;

配置完編譯成功後,生成go.sum依賴分析結果,裏面會有當前所有的依賴詳細信息;

3. go modules指令

  1. go get

    go get -u (沒有參數)下載更新當前包下 直接和間接的依賴的最新版本並不會更新整個項目
    go get -u ./...下載更新當前項目根目錄下直接或間接的依賴的最新版本但是會排除測試包的依賴例如將v1.2.1更新爲v2.0.1
    go get -u=patch ./...下載更新當前項目根目錄下直接或間接的依賴的大版本的最新小版本例如將v1.2.1更新爲v1.2.5
    go get -u -t ./... 和go get -u ./...相似但是會更新測試包的依賴
    go get -d 只執行下載動作而不執行安裝動作不再支持go get -m ,使用go get -d替代
  2. go list

    go list -m all 列出當前項目build時需要使用直接或間接依賴的版本 
    go list -u -m all 不僅會列出當前使用模塊的版本還會列出當前使用模塊的最新小版本和最新版本 
  3. go build ./... 構建當前項目 

  4. go test ./... 執行當前項目下的測試

  5. go mod

go mod tidy 刪除不必要的依賴添加OS, architecture, and build tags組合所需要的依賴
go mod vendor 可選步驟用於建立vendor文件夾用於vendor機制的包管理.
go mod init 將go項目初始化成module-mode使用go modules進行依賴管理
go mod verify 校驗go.sum記錄的依賴信息是否正確

4. go modules需要注意的地方

  • 在項目根目錄下生成go.mod
  • 項目中的包引用使用import "[module名稱]/[包所在文件在項目中的相對路徑]"

二、Goland配置

首先我們需要開啓go modules功能,然後配置代理;不配置代理會訪問國外地址,會很慢;建議使用以下三個地址:

  • https://goproxy.io
  • https://goproxy.cn
  • https://mirrors.aliyun.com/goproxy/

image-20200308224453465

項目結構:

image-20200308230407947

使用上節課我們的hello world程序,創建go.mod,內容如下

module hello

go 1.14

require (
github.com/gogf/gf v1.15.3
)

代碼內容如下:

package main

import (
	"fmt"
	"github.com/gogf/gf"
	"github.com/gogf/gf/crypto/gmd5"
)

func main(){
	fmt.Println("hello world!")
	fmt.Println(gf.VERSION)
	fmt.Println(gmd5.EncryptString("123456"))
}

第一次我們需要下載依賴包,可以選擇go.mod文件右鍵選擇Go Mod Tidy

或者點擊沒下載的包,alt+enter鍵,選擇Sync packages of hello

image-20200308224919808

然後運行程序看到運行結果

hello world!
v1.15.3
e10adc3949ba59abbe56e057f20f883e <nil>

Process finished with exit code 0

代碼地址

教程視頻

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章