• 主页
  • 架构
  • 编程语言
  • 数据存储
  • 网络
  • VMware
  • 服务器
  • 组网
  • AI
  • 算法系列
  • 设计模式
  • 读书笔记
  • 思考
  • 工具
  • 其它技术

  • 主页
  • 架构
  • 编程语言
  • 数据存储
  • 网络
  • VMware
  • 服务器
  • 组网
  • AI
  • 算法系列
  • 设计模式
  • 读书笔记
  • 思考
  • 工具
  • 其它技术

Go1.12使用gomod总结

2024-08-18

使用方法

如果您使用的 Go 版本是 1.13 及以上 (推荐)

1
2
3
4
5
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct

# 设置不走 proxy 的私有仓库,多个用逗号相隔(可选)
go env -w GOPRIVATE=*.corp.example.com

如果您使用的 Go 版本是 1.12 及以下

Bash (Linux or macOS)

1
2
3
4
# 启用 Go Modules 功能
export GO111MODULE=on
# 配置 GOPROXY 环境变量
export GOPROXY=https://goproxy.io

问题

  1. go1.12如果使用GOPROXY,则所有包都会经过GOPROXY。如果go.mod里有私有库的包,则会查找不到。而go1.13中的GOPRIVATE可以完美解决这个问题。
  2. go1.12的GOPROXY无法支持多个,只能配置一个,如果使用逗号分割,会报错。

解决方法

  1. 建议直接使用go1.13及以上。升级能解决大部分问题。
  2. go.mod中使用replace。在编译项目时,将需要的资源clone到指定位置,go.mod使用replace将这些包指向clone的位置。这样操纵能解决私有库的问题,但是不灵活,而且也无法很好地发挥gomod的特性。
  3. 自建proxy,该proxy能下载外网和内网包。

参考资料

  1. https://goproxy.io/zh/

扫一扫,分享到微信

微信分享二维码
记博客服务被压垮的历程
记追查go1.13无法获取到cookie的过程
© 2025 John Doe
Hexo Theme Yilia by Litten