go 工具链
go get
go get -u github.com/xx/go-xx
go get github.com/xx/go-xx@v1.2.3模块
go mod init {mymodule}
go mod tidy在 Go 项目中,go mod 是 Go 语言的模块化管理工具,它用于管理项目的依赖关系、版本控制以及构建项目的环境。go mod 自 Go 1.11 版本开始引入,旨在简化和标准化 Go 项目的依赖管理。
1. 初始化 Go 模块
要初始化一个 Go 项目,并启用模块管理,你需要在项目根目录下运行:
go mod init <module-name>其中 <module-name> 是你希望为模块设置的名称,通常是你的项目的路径或者版本控制的 URL(例如,github.com/user/project)。
这个命令会在你的项目根目录下生成一个 go.mod 文件,这个文件用于记录模块的基本信息和项目依赖。
2. go.mod 文件
go.mod 文件包含了关于 Go 模块的信息,主要包括:
module:模块的名称。go:Go 语言的版本。require:列出项目依赖的模块及其版本。replace(可选):用于替换模块版本或路径。exclude(可选):排除不想使用的模块版本。
示例 go.mod 文件:
module github.com/user/project
go 1.19
require (
github.com/gin-gonic/gin v1.7.4
github.com/sirupsen/logrus v1.8.1
)3. 添加依赖
当你需要引入外部包时,可以直接通过 go get 命令安装:
go get github.com/gin-gonic/gin这会将 gin 包和它的依赖下载到 go.mod 和 go.sum 文件中,并更新这些文件的记录。
4. go.sum 文件
go.sum 文件包含每个依赖包的加密哈希值,确保项目在构建时使用的是相同的版本,避免因依赖的变动而导致构建问题。
5. 更新依赖
如果你想更新某个依赖包,可以使用:
go get <package-name>@latest或者指定某个版本:
go get <package-name>@v1.2.3更新后的依赖会反映在 go.mod 和 go.sum 中。
6. 移除未使用的依赖
Go 会自动移除不再使用的依赖包,但你也可以手动执行以下命令,清理不再需要的依赖:
go mod tidy这个命令会删除 go.mod 中未被使用的依赖,并更新 go.sum 文件。
7. 构建和运行项目
使用 Go 模块管理时,你依然可以像平常一样使用 go run、go build 等命令:
go run main.go
go build这些命令会根据 go.mod 中记录的依赖来构建项目,并确保使用正确版本的依赖。
8. 查看当前模块的依赖
如果你需要查看当前模块的所有依赖(包括 transitive 依赖),可以使用:
go list -m all9. 查看和下载依赖
如果你想要下载所有依赖包,可以运行:
go mod download10. 使用 replace 指令
如果你需要临时替换某个模块的路径或版本,可以在 go.mod 中使用 replace 指令。例如,如果你希望使用本地的某个库:
replace github.com/some/module v1.2.3 => /path/to/local/module11. 使用 exclude 指令
exclude 指令允许你排除某个版本的依赖模块。例如:
exclude github.com/some/module v1.2.312. 工作区模式(Go 1.18及以后)
从 Go 1.18 开始,引入了工作区模式(Go Workspaces)。如果你的项目由多个模块组成,可以使用 go.work 文件来管理工作区的多个模块。你可以使用以下命令创建工作区:
go work init然后在 go.work 中列出多个模块路径。
总结
go.mod文件:管理模块信息和依赖版本。go.sum文件:记录模块的哈希值,保证依赖一致性。- 常用命令:
go mod init:初始化模块。go mod tidy:清理不必要的依赖。go get:添加、更新依赖。go run、go build:构建和运行项目。
通过使用 Go 模块,Go 语言的依赖管理变得更加方便,避免了版本冲突和依赖不一致的问题。