开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 1 天,点击查看活动详情
Modules 是 Go 管理依赖关系的工具,在 1.11 版本中加入,并在 1.13中对模块进行了重大改进和更改。相比前面的 dep,vendor,glide 等包管理方案,更易于上手。如果你现在开始一个 go 项目,最好了解一下。
Modules 的使用非常简单,我们不妨尝试一下:
开启(1.13版本及以后无需这一步)
1.13版本前需手动开启模块(1.13 版本开始已经是默认模式)
export GO111MODULE=auto
初始化
进入项目目录,执行以下命令:
go mod init github.com/13sai/gomodules
output:
go: creating new go.mod: module github.com/13sai/gomodules
可以看到会生成go.mod,文件内容如下【go 1.19表示当前版本】
module github.com/13sai/gomodules
go 1.19
使用 go get
每次 go get 后,modules也会将你的安装的package加入go.mod
go get github.com/13sai/gohelper
module github.com/13sai/gomodules
go 1.19
require github.com/13sai/gohelper v0.0.1 // indirect
当然,如果你没有翻墙,也没有使用国内镜像,很多包可能都下载失败。可以参考goproxy.cn/设置。
本地文件夹相互调用
新建 pkg 目录,新建 str.go
package pkg
import "github.com/13sai/gohelper/str"
func MD(s string) string {
return str.Md5(s)
}
简单写一下 main.go
package main
import "github.com/13sai/gomodules/pkg" // 引入刚刚新建的 pkg
func main() {
print(pkg.MD("13sai"))
}
然后执行:
go run main.go
pkg/str.go:3:8: no required module provides package github.com/13sai/gohelper/str; to add it:
go get github.com/13sai/gohelper/str
这里可以执行根据提示执行
go get github.com/13sai/gohelper/str
或者可以使用
go mod tidy
这个命令可以拉取缺少的 package,移除不用的 package。
这个命令很有用,我习惯每次完成一个阶段代码都执行一次,可以去除很多冗余的 package。
其他命令
- go mod download //下载依赖包到本地缓存
- go mod graph //打印现有依赖结构
- go mod verify //校验依赖
- go mod why //解释为什么需要此模块
- go mod vendor //下载依赖的package到本地vendor目录,学习中可使用
相关代码可参考: github.com/13sai/blog-…