Go 如何组织围棋项目

Go 如何组织围棋项目,go,github,Go,Github,我正在开发一个新的Golang应用程序,它包含一些专有代码,还包括一些开源软件包。代码将是企业GitHub存储库的一部分 我们不打算继续使用最新版本的开源软件包,而是希望保持软件包的稳定版本。在这种情况下,组织代码的最佳方式是什么?从我目前所读到的内容来看,将开源软件包放入供应商目录的最佳方式是 在任何情况下,一开始我们都希望有一个清晰的项目布局,以便长期保持简单。如果您使用的是Go=1.11的版本,正如@oren在评论部分(归功于他)所指出的那样,您可能会想改用它,因为现在Go工具链中引入了它

我正在开发一个新的Golang应用程序,它包含一些专有代码,还包括一些开源软件包。代码将是企业GitHub存储库的一部分

我们不打算继续使用最新版本的开源软件包,而是希望保持软件包的稳定版本。在这种情况下,组织代码的最佳方式是什么?从我目前所读到的内容来看,将开源软件包放入供应商目录的最佳方式是


在任何情况下,一开始我们都希望有一个清晰的项目布局,以便长期保持简单。

如果您使用的是Go<1.11版本,您可以查看依赖关系管理:

  • dep init
    将生成布局(请参阅)
  • Gopkg.lock
    文件将处理每个依赖项的特定修订,从而确保构建的稳定性(而不是让不同的开发人员使用同一依赖项的不同版本,这取决于他们何时获得该依赖项)

但是,如果您使用的是Go>=1.11的版本,正如@oren在评论部分(归功于他)所指出的那样,您可能会想改用它,因为现在Go工具链中引入了它。

您是否选中了“Go模块”?Do't use
dep
的可能重复项。dep不在主工具链中,请使用
go模块
,尤其是对于新项目。@oren我错过了这一点;我想是时候把我的Go版本升级到1.11了:)我已经用你的建议更新了答案,谢谢你的建议。酷,还有一件事,对于“Go 1.10”,我会使用“vgo”。如果我开始一个新项目,我看不出有任何理由不升级到Go1.11“dep”存在“vgo/go模块”修复的问题。在我看来,正确的方法(尤其是对于新项目)就是使用vgo@oren模块还不能很好地工作-使用模块管理可传递的依赖关系几乎是不可能的(除非您还可以控制依赖的代码库),虽然
dep
可以轻松地完成任何你能想象的事情。@当同一版本中需要两个主要版本时,zerkms的“语义导入版本控制”不是在减少“转换依赖项冲突”吗?我可能在管理传递依赖性方面的想法不正确。如果你有一个例子,我想知道。谢谢