最近使用go mod代理下载包的时候遇到个小问题,提示说go mod的包检查Hash不一致的问题,下面是我运行 go mod download [包名] 下包的时候的错误。(使用go mod tidy下包也是一样的结果)

原因
查询大量的资料后,确定的问题所在,go mod 在下载包的时候会检查你下载的包与go官方维护的包的一致性和完整性。go mod 检查Hash一致使用的地址是go环境变量 GOSUMDB 的地址,这个值默认是 sum.golang.org,这个地址在国内目前肯定是被墙了的。
解决
第一种:关闭go mod的hash检查
将环境变量 GOSUMDB 的值设为off,GOSUMDB=off;即可关闭go mod的包hash检查功能,就能够随便下载了。这个方法是100%最快捷的方法
GOSUMDB
第二种:修改GOSUMDB
将环境变量 GOSUMDB 的值设为其它国内的地址,目前我使用的是sum.golang.google.cn
第三种:设置GONOSUMDB
环境变量
GONOSUMDB 可以选择设置某些名称开头包跳过go mod的hash检查,例如:
GONOSUMDB=go.uber.org/zap,不过不知道是什么原因,我的mac上没有成功。有兴趣的可以详细参考官方文档,可能有我没有注意的地方。
点我查阅官方文档