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

gyl*_*laz 2 naming-conventions go

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

import "github.com/howeyc/fsnotify"
Run Code Online (Sandbox Code Playgroud)

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

import "howeyc/fsnotify"
Run Code Online (Sandbox Code Playgroud)

那不太可能发生碰撞.还是其他一些"更短"的策略?是因为它"正常" go get吗?还是有其他原因吗?

Luk*_*uke 8

howeyc/fsnotify如果你愿意,你可以使用.当github.com/howeyc/fsnotify使用它的理解,该包装是Github上托管.其他存储库也可以工作.

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