我试图理解 Go 中包命名约定背后的想法。大多数软件包的安装和导入方式如下:
import "github.com/howeyc/fsnotify"
我认为包名称应该是唯一的,但我不明白使用网站的意义github.com
。为什么不直接使用author/package
?喜欢:
import "howeyc/fsnotify"
这不太可能发生冲突。还是其他一些“较短”的策略?是因为它“只适用”go get
吗?还是有其他原因?
我试图理解 Go 中包命名约定背后的想法。大多数软件包的安装和导入方式如下:
import "github.com/howeyc/fsnotify"
我认为包名称应该是唯一的,但我不明白使用网站的意义github.com
。为什么不直接使用author/package
?喜欢:
import "howeyc/fsnotify"
这不太可能发生冲突。还是其他一些“较短”的策略?是因为它“只适用”go get
吗?还是有其他原因?
howeyc/fsnotify
如果你愿意,你可以使用。使用时github.com/howeyc/fsnotify
,可以理解该软件包托管在 Github 上。其他存储库也可以工作。
原因是它使查找和安装依赖项变得更容易go get
。否则,您必须手动满足依赖关系。由于分叉 repos 在开源世界中非常普遍,您可能有来自同一作者的修改版本。因此,它有助于区分您的项目所依赖的内容。
用法:
go get [-d] [-fix] [-u] [build flags] [packages]
下载并安装由导入路径命名的包及其依赖项。
在签出或更新包时,get 会查找与本地安装的 Go 版本匹配的分支或标签。最重要的规则是,如果本地安装运行版本“go1”,get 搜索名为“go1”的分支或标签。如果不存在这样的版本,它将检索包的最新版本。
有关指定包的更多信息,请参阅“
go help packages
”。有关“go get”如何查找要下载的源代码的更多信息,请参阅“
go help remote
”。
导入路径支持该go get
命令。表示远程存储库的路径以代码的路径开头。运行go help remote
命令以获取详细信息。