如果您有一个 go-only 存储库(假设它是https://github.com/foo/bar),您可以将您的代码放在根级别,并使用以下命令导入其他代码:
go get -u github.com/foo/bar
Run Code Online (Sandbox Code Playgroud)
其中的目录和子目录将被识别为包。
但是假设您正在 github 上创建一个多语言存储库(例如,一个具有 java 代码、go 代码、javascript 代码等)。并且你想让你的 go 代码可供其他人使用。从代码组织的角度来看,通常将 go 代码放在根级别是不可以的。可能更常见的是
(root)
|-- src
|-- main
|-- go
|-- java
|-- javascript
|-- proto
Run Code Online (Sandbox Code Playgroud)
Go 代码的根级别现在位于https://github.com/foo/bar/src/main/go。但是您不能再使用以前的go get命令,因为它会查看顶层。您真的不想使用它们go get -u github.com/foo/bar/src/main/go,因为所有这些现在都将成为包名称的一部分,这真是令人讨厌。
问题是,有没有办法指定一个确切的 URL,以便您可以将包名和 URL 分开?换句话说,我正在寻找类似的东西
go get -u github.com/foo/bar https://github.com/foo/bar/src/main/go
Run Code Online (Sandbox Code Playgroud)
(当然,包名应该与源代码中实际存在的包名相匹配,否则将无法编译)。
我查看了 go 文档,但我不清楚这是否可行。