go.mod
go.mod 是 Go 语言引入的包管理工具,用于解决 Go 语言项目在依赖管理方面的问题。
go.sum
为了确保一致性构建,Go引入了go.mod文件通过哈希值来标记每个依赖包的版本,在构建过程中go命令会下载go.mod中的依赖包,下载的依赖包会缓存在本地,以便下次构建。
考虑到下载的依赖包有可能是被黑客恶意篡改的,以及缓存在本地的依赖包也有被篡改的可能,单单一个go.mod文件并不能保证一致性构建。
为了解决Go module的这一安全隐患,Go开发团队在引入go.mod的同时也引入了go.sum文件,用于记录每个依赖包的哈希值。
在构建时,如果本地的依赖包hash值与go.sum文件中记录得不一致,则会拒绝构建。
因此,该文件记录了每个依赖模块的校验和,用于确保依赖的安全性和可重现性。在执行 go build 或 go run 时,Go 会检查 go.sum 文件以确保依赖的完整性。
总结
这两个文件分别负责不同的分工:区分模块信息和依赖校验信息,来确保项目的依赖管理的准确性和安全性,要把它们放在不同的文件。
参考
- https://blog.csdn.net/codekingo/article/details/139903371