Go包命名约定背后的想法是什么?

时间:2013-08-05 21:30:55

标签: go naming-conventions

我正在尝试理解Go中包命名约定背后的想法。大多数软件包的安装和导入类似于:

import "github.com/howeyc/fsnotify"

我认为软件包名称应该是唯一的,但我没有看到使用网站github.com的重点。为什么不使用author/package?喜欢:

import "howeyc/fsnotify"

那不太可能发生碰撞。还是其他一些“更短”的策略?是因为它“只适用于”go get吗?还是有其他原因吗?

2 个答案:

答案 0 :(得分:8)

如果您愿意,可以使用howeyc/fsnotify。使用github.com/howeyc/fsnotify时,可以理解该程序包是在Github上托管的。其他存储库也可以工作。

原因是它使用go get更容易找到和安装依赖项。否则,您必须手动满足依赖项。因为在开源世界中分叉repos很常见,所以你可能有来自同一作者的修改版本。因此,它有助于区分您的项目所依赖的内容。

答案 1 :(得分:1)

  

Download and install packages and dependencies

     

用法:

go get [-d] [-fix] [-u] [build flags] [packages]
     

获取下载并安装导入路径指定的包,   以及他们的依赖。

     

签出或更新包时,查找分支或   与本地安装的Go版本匹配的标记。最多   重要的规则是,如果本地安装正在运行版本   “go1”,搜索名为“go1”的分支或标签。如果没有这样的话   版本存在它检索包的最新版本。

     

有关指定包的详细信息,请参阅“go help packages”。

     

有关“go get”如何找到要下载的源代码的详细信息,请参阅“go help remote”。

导入路径支持go get命令。表示远程存储库的路径以代码的路径开头。运行go help remote命令以获取详细信息。