Go如何更新第三方软件包?

看看golang包是如何增长和提高的我想知道包版本的问题是如何解决的?

我看到一种方法是将第三方软件包存储在项目文件夹下。

但是如果我安装它go get

go get会将程序包安装在GOPATH (一个可能包含冒号分隔的目录列表的环境variables)列出的第一个目录中。 您可以使用go get -u来更新现有的软件包。

您也可以使用go get -u all来更新GOPATH所有包

对于较大的项目,为每个项目创build不同的GOPATH可能是合理的,因此更新项目A中的库不会导致项目B中的问题。

键入go help gopath以查找有关GOPATH环境variables的更多信息。

@tux答案很好,只是想补充一点,你可以用go去更新一个特定的包:

 go get -u full_package_name 

由于问题提到的第三方库,而不是所有的包,那么你可能想要回到使用通配符。

一个用例是:我只想更新从Github VCS获得的所有包,然后你只会说:

 go get -u github.com/... // ('...' being the wildcard). 

这将继续,只在当前$GOPATH更新你的github包

同样适用于VCS内部,也就是说,您只想从ogranizaiton A的仓库中升级所有软件包,因为他们已经发布了您所依赖的修补程序:

 go get -u github.com/orgA/... 

以上回答有以下问题:

  1. 他们更新包括你的应用程序的一切(如果你有未提交的更改)。
  2. 他们更新了您可能已经从您的项目中删除的软件包,但已经在您的磁盘上。

要避免这些,请执行以下操作:

  1. 删除要更新的第三方文件夹。
  2. 去你的应用程序文件夹并运行go get -d