Go modules 是 Go 语言从 1.11 版本开始引入的依赖管理系统

# 特点

  1. 模块化设计:
    • Go modules 将代码组织成相互独立的模块,每个模块都有自己的版本号和依赖关系。
    • 这种模块化设计使得代码更加清晰、可维护,同时也解决了以前 Go vendor 机制存在的一些问题。
  2. 版本控制:
    • Go modules 采用语义版本控制 (Semantic Versioning) 的方式来管理依赖包的版本。
    • 开发者可以精确地指定需要使用的依赖包版本,避免因版本问题导致的兼容性问题。
  3. 依赖管理:
    • Go modules 使用 go.mod 文件来声明项目的依赖关系。
    • 当运行 go getgo build 等命令时,Go 会自动解析并下载所需的依赖包。
    • 依赖包会被缓存在本地,提高构建速度。
  4. 向后兼容:
    • Go modules 引入了版本号后缀 (如 v2 , v3 等) 来区分不同的主版本。
    • 这使得项目可以平滑地升级到新的主版本,而不会破坏现有的代码。
  5. Go get 的变化:
    • 在 Go modules 出现之前, go get 命令会将依赖包直接下载到 $GOPATH/src 目录。
    • 而在 Go modules 中, go get 会将依赖包下载到一个临时目录,并将其添加到 go.mod 文件中。
  6. 模块代理:
    • Go modules 引入了模块代理的概念,开发者可以设置自己的模块代理服务,加快依赖包的下载速度。
    • 常见的模块代理有 AthensGoproxy.cn 等。
  7. 迁移过程:
    • 对于已有的 Go 项目,可以通过 go mod init 命令初始化 go.mod 文件,然后使用 go mod tidy 命令来管理依赖。
    • 这样可以平滑地将项目从旧的依赖管理机制迁移到 Go modules。
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

colagold 微信支付

微信支付

colagold 支付宝

支付宝