【问题标题】:go-lang project folder structure conventiongo-lang 项目文件夹结构约定
【发布时间】:2016-08-07 06:38:40
【问题描述】:

我只是想确认一下我对 Go 项目中典型项目文件夹结构的理解,它遵循 Go tool conventions

如果我正在编写一个名为 my-package 的包,它使用另一个第三方外部包 - other-package。那么按照约定,这个目录结构对吗?

+bin
+pkg
+src
  |
  --- my-package.com/..
  |
  --- external-package.com/..

我在阅读文档后再次问这个问题的原因是因为与其他语言约定不同,用户和第 3 方代码位于同一个顶级文件夹中。

【问题讨论】:

  • 我的目录结构密码:/go/src/github.com/github-account-name/project-name
  • 可以,只要根目录是 $GOPATH

标签: go


【解决方案1】:

通过 irc #go-nuts

用户的机器将有一个用于所有项目的公共$GOPATH/src。这个$GOPATH/src 可能有多个项目(用户的、外部包等)。用户只需将 $GOPATH/src/mypackage 提交到他们的 src 存储库。

如果您想为您的 src 和 3rd 方包源设置单独的目录,请在 $GOPATH 前面添加另一个路径。 go get 会将第 3 方包下载到该路径。 go-get 将第三个包下载到它在$GOPATH 指定的路径数组中找到的第一个路径。

【讨论】:

    【解决方案2】:

    Golang 在这个话题上与其他语言有很大的不同,我可以说在我刚接触 Golang 的时候很难理解这个话题。我建议您将所有项目都放在 $GOPATH/src 上,并且不要有多个 $GOPATH。

    在 GOLANG 上我们必须适应它,比如 sa http://golang.org/doc/code.html(代码组织)

    【讨论】:

    • 自定义包的导入效果如何?例如,您的项目位于 /src/project1 中,而一些帮助程序包位于 /src/project1/helper 下。一定要import "project1/myhelper"吗?在我看来,如果可以省略 project1 关键字会更干净(如果这是我们在 src 文件夹中的唯一项目,则会发生这种情况,因为我们只需删除 project1 并移动所有其他文件和文件夹之一升级)。我们能以某种方式做到这一点(同时仍然有多个项目)吗?
    猜你喜欢
    • 1970-01-01
    • 2016-08-05
    • 2014-07-09
    • 2018-03-11
    • 2020-09-11
    • 1970-01-01
    • 2019-10-08
    • 2011-07-07
    • 1970-01-01
    相关资源
    最近更新 更多