Go项目依赖管理统一使用go mod,无需额外包管理器;通过go mod init初始化模块,go get声明并下载指定版本依赖,go mod vendor支持离线构建,replace仅本地生效。

Go 项目依赖管理已统一用 go mod,不需要额外安装包管理器,也不推荐用 go get 直接全局安装库——它不解决版本锁定和可重现构建问题。
初始化模块并启用 Go Modules
在项目根目录执行:
go mod init example.com/myapp这会生成
go.mod 文件,并默认启用 module 模式(Go 1.16+ 默认开启)。若遇到 GO111MODULE=off 报错,先运行:go env -w GO111MODULE=on
添加常用 Web 框架(如 Gin)
Gin 是轻量、高性能的 HTTP 路由框架,适合快速搭建 API 服务。添加方式不是“安装”,而是声明依赖并触发下载:
go get -u github.com/gin-gonic/gin@v1.12.0
-
-u表示升级到指定版本(含间接依赖) - @ 后跟语义化版本号,避免拉取不稳定
main分支 - 执行后
go.mod自动追加require行,go.sum记录校验和 - 后续
go run main.go或go build会自动解析并使用该版本
引入数据库驱动(如 PostgreSQL + sqlx)
Go 原生 database/sql 是接口层,需配合驱动使用。常见组合:
go get github.com/jackc/pgx/v5@v5.4.3
go get github.com/jmoiron/sqlx@v1.3.5
-
pgx性能优于lib/pq,v5 是当前主流稳定版 -
sqlx提供结构体扫描、命名参数等便利功能,但不替代 ORM - 注意路径中的
/v5和@v1.3.5:Go Module 要求 major 版本 >1 必须体现在 import 路径或 tag 中 - 不要用
go get github.com/lib/pq这类无版本号写法,容易意外升级到 breaking change 版本
处理 vendor 和离线环境
默认不生成 vendor/ 目录。如需锁定全部依赖副本(例如 CI 环境禁外网):
go mod vendor
- 生成
vendor/后,可用go build -mod=vendor强制只读该目录 -
go mod vendor不会自动更新已有 vendor 内容,删掉再重新执行才生效 - CI 中建议用
go mod download预热缓存,而非依赖 vendor —— 更轻量且兼容 GOPROXY
go.mod 中的 replace 语句仅在本地开发时生效,CI 构建若未同步 replace 规则,会导致行为不一致。调试时记得检查 go list -m all | grep xxx 确认实际加载的版本。










