go-go module

什么是 Go Modules

Go 1.11 和 Go 1.12 包含了初步的 Go Modules 支持,且计划在 2019 年 8 月发布的 Go 1.13 会在所有开发过程中默认使用 Go Modules。

Go Modules 是为了提升使用其他开发者代码,即添加**依赖项(模块、包)**时的体验,也是为了让代码的正确性、安全性得到保障。并且 Go Modules 可以使用 GOPROXY 环境变量来解决中国大陆无法使用 go get 的问题。

Go Modules 在 Go 1.11 及 Go 1.12 中有三个模式,根据环境变量 GO111MODULE 定义:

  • 默认模式(未设置该环境变量或 GO111MODULE=auto):Go 命令行工具在同时满足以下两个条件时使用 Go Modules:

    当前目录不在 GOPATH/src/ 下;
    在当前目录或上层目录中存在 go.mod 文件。

  • GOPATH 模式(GO111MODULE=off):Go 命令行工具从不使用 Go Modules。相反,它查找 vendor 目录和 GOPATH 以查找依赖项。

  • Go Modules 模式(GO111MODULE=on):Go 命令行工具只使用 Go Modules,从不咨询 GOPATH。GOPATH 不再作为导入目录,但它仍然存储下载的依赖项(GOPATH/pkg/mod/)和已安装的命令(GOPATH/bin/),只移除了 GOPATH/src/

Go 1.13 默认使用 Go Modules 模式,所以以上内容在 Go 1.13 发布并在生产环境中使用后都可以忽略。

总结:意思 就是 新版本默认使用Go Modules 模式, src 源码路径可以放置到任何地方,不受限于GOPATH目录。

与 GoLand 集成

在这里插入图片描述

Go mod 使用记录

初始化项目
使用 go mod init 初始化一个 go.mod 文件

go mod init

找到项目依赖(整理依赖包)
使用 go mod tidy 找到项目依赖,并写入到 go.mod

go mod tidy

如果想缓存到vendor目录

go mod vendor

更新已有包版本
如果我们想要更新一个已在 go.mod 文件列出的包,可以使用 go get -u PKG_PATH
如,要更新 github.com/gookit/filter 到最新版本:

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