go mod 依赖管理
从 C++ 的 CMake+Conan/vcpkg 到 Go modules:官方集成、语义化版本与可复现构建 一、简述 Go 自 1.11 起引入 Go modules(常称 go mod)作为官方依赖管理工具,1.16 起默认启用。它把「依赖管理」内置到工具链里,一个 go.mod 文件声明模块与依赖,go.sum 锁定依赖的校验和,配合**语义化版本(v1.2.3)**和 GOPROXY 代理,实现可复现构建。 对于 C++ 开发者,可以把它理解为「CMake + Conan/vcpkg + 包清单 + 锁文件的四合一」:go.mod ≈ CMakeLists.txt + conanfile.txt,go.sum ≈ 锁文件,go get ≈ conan install,replace 指令 ≈ CMake 的本地路径引入。 核心要点:Go modules 不是「又一个包管理器」,而是语言官方、零配置文件的依赖解决方案。理解 go.mod 的四个指令(module / go / require / replace)就掌握了 90% 的日常操作。 二、C++ 对照速查表 概念 C++ Go 关键差异 构建系统 CMake / Makefile go build(内建) 无需写构建脚本 依赖清单 conanfile.txt / vcpkg.json go.mod 官方格式,随项目同时维护 依赖安装 conan install / vcpkg install go get / go mod tidy 不装到系统,进模块缓存 锁文件 Conan conan.lock(可选) go.sum 默认生成,锁定每行依赖版本+校验和 本地路径依赖 target_link_libraries 指向源码目录 replace ... => ../xxx 官方一等公民指令 语义化版本 Conan [requires] pkg/1.2.3 v1.2.3(标签含 v 前缀) Go 的版本就是 git tag 代理/镜像 自建 Artifactory / Nexus GOPROXY(如 goproxy.cn) 环境变量即可切换,无需配置仓库 私有仓库 CMake FetchContent + SSH GOPRIVATE + git 绕过代理直连 缓存目录 Conan 本地 cache $GOPATH/pkg/mod 全局共享,只读 vendor 机制 把第三方源码拷进仓库 go mod vendor 可选但常用,利于离线构建 三、逐主题详解 3.1 module 与 go.mod 三大字段 在项目根目录运行 go mod init 生成 go.mod: ...
豫公网安备41108202000982号