稍后,如果我想创建另一个Go项目,我会创建一个名为project2的新目录,并将其指向project2…我的问题是,Go是否有一个中央存储库?如果不是,则如果在两个不同的项目中使用相同的包,则会下载相同的包两次。这是真的吗?

不,没有Go代码的中央存储库。然而,包总是会被下载两次也不是真的。

这里的误解是

指向单个项目:它不会。相反,

指向一个

环境

所有包所在的位置;这就是

将下载软件包,以及在哪里

将在构建时查找包。

而不是改变

对于每个项目,都应该设置

一次,并将所有项目放入

(您的项目不包含

目录,它们就会

the the the

目录)。

例如,整个树可能如下所示:

更新

值得注意的是,这个答案不再正确。既然Go模块是Go代码的正常版本控制机制,

正在逐步淘汰时,已经设置了一个中央代理,它通过Google服务器路由对包的所有请求,这些服务器可以缓存包的各种标记版本。一个单独的校验和数据库为每个可审计的包保存哈希,并可以帮助您检测包作者是否更改了已经发布的标签。所有这些都不是一个中央存储库,就像PyPi (在Python世界中)或NPM (对于JavaScript)一样:包仍然是从它们的源代码控制中获取的,但是因为默认情况下所有包都是通过代理路由的,所以它也有类似的目的。有关更多信息,请参阅

https://proxy.golang.org/