

go.mod,每个项目都清清楚楚。
go.mod 文件就是项目的总账本,记录了项目用了哪些第三方库(包)及其版本。
还有个 go.sum,它是防伪标记(校验和),确保下载的包没有被掉包(防止中间人攻击)。
开始一个新项目时,先初始化。名字通常是代码仓库的地址。
go mod init github.com/tangbohu/qiuxiang
这会生成一个 go.mod 文件。
当你 import 一个新包并运行 go get 或 go build 时,Go 会自动下载并记录在案。
# 下载 gin 框架
go get github.com/gin-gonic/gin
# 指定版本(买特定年份的酒)
go get github.com/gin-gonic/gin@v1.9.0
# 升级所有依赖到最新 minor 版本
go get -u ./...
清理没用的依赖,下载缺少的依赖。每次提交代码前都要运行一下,保持账本干净。
go mod tidy
有时候需要临时修改第三方库,或者用本地的代码替换远程的(比如国内访问不了某些包),可以用 replace 指令。
// go.mod 文件内容示例
module myproject
go 1.20
require (
github.com/google/uuid v1.3.0
)
// 把 google.golang.org/grpc 替换为 github.com/grpc/grpc-go
replace google.golang.org/grpc => github.com/grpc/grpc-go v1.38.0
想知道为什么要引入某个包?
# 为什么要用这个包?
go mod why github.com/stretchr/testify
# 打印所有依赖关系图
go mod graph
把所有依赖的源码都下载到项目目录下的 vendor 文件夹里,即使断网也能编译。
go mod vendor
在命令行初始化一个名为 tang-fu 的模块。
命令: go mod ______ tang-fu
答案: init