2023-05-16
温故知新
00

目录

简介
module
require
exclude
replace
拓展
go.sum
切换国内代理

简介

go.mod 文件是 Go mod 的核心文件,用于描述项目的信息和依赖库的版本信息。简而言之:依赖版本管理。它包含以下几个部分:

  • module
  • require
  • exclude
  • replace

module

module:声明模块的名称,格式为 module <module-name>。例如:

go
module example.com/myproject

require

require:声明依赖的库及其版本,格式为 require <package-name> <version>。例如:

go
require github.com/pkg/errors v0.9.1

这里声明了依赖 github.com/pkg/errors 这个库的版本为 v0.9.1

exclude

exclude:排除某个依赖库的特定版本,格式为 exclude <package-name> <version>。例如:

go
exclude github.com/pkg/errors v0.9.2

这里排除了依赖 github.com/pkg/errors 这个库的 v0.9.2 版本。

replace

replace:替换某个依赖库的版本为本地的开发版本,格式为 replace <package-name> <version> => <local-path>。例如:

go
replace github.com/pkg/errors v0.9.1 => ../local/errors

这里将依赖 github.com/pkg/errors 这个库的版本 v0.9.1 替换为本地路径 ../local/errors 下的开发版本。

拓展

编写 go.mod 文件时,可以使用 go mod init 命令自动生成基本的文件框架,也可以手动编写。以下是一个简单的 go.mod 文件示例:

go
module example.com/myproject require ( github.com/pkg/errors v0.9.1 github.com/go-sql-driver/mysql v1.5.0 ) exclude ( github.com/pkg/errors v0.9.2 ) replace github.com/pkg/errors v0.9.1 => ../local/errors

在编写 go.mod 文件时,可以使用 go mod verify 命令来验证文件的正确性。

go.sum

go
go mod tidy

go.sum 是 Go 1.11 引入的一种新的依赖管理方式。它记录了所有依赖包的版本和哈希值,以确保每个依赖包的完整性和安全性,避免被篡改或替换。当使用 go get 或 go mod 命令下载依赖包时,Go 会根据 go.sum 文件中记录的哈希值验证依赖包的完整性,如果哈希值不匹配,则会提示下载失败或者安装失败。

在项目中,可以通过执行 go mod tidy 命令来自动生成或者更新 go.sum 文件,它会根据当前项目中使用的依赖包版本计算哈希值并写入到 go.sum 文件中。

如果不编写 go.sum 文件,Go 会在下载或安装依赖包时忽略哈希值的验证,这样会存在一定的安全风险,因为依赖包可能被篡改或替换,导致应用程序遭受攻击或出现不可预料的错误。因此,建议在项目中始终编写 go.sum 文件,并且每次更新依赖包版本时都及时更新 go.sum 文件,以确保项目的安全性和稳定性。

切换国内代理

go env -w GOPROXY=https://goproxy.cn,direct
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:DingDangDog

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!