如果你有一个go-only repo(让's say it' s https://github.com/foo/bar),你可以将你的代码放在根级别,并使用以下命令导入其他代码:

go get -u github.com/foo/bar

其中的目录和子目录将被视为包 .

但是假设您正在github上创建一个多语言仓库(例如,具有java代码,代码,javascript代码等) . 并且您希望将其代码提供给其他人使用 . 从代码组织的角度来看,通常将go代码放在根级别是一个禁忌 . 可能更常见的可能是

(root)
  |-- src
       |-- main
            |-- go
            |-- java
            |-- javascript
            |-- proto

您的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

(当然包名称应该与源中的实际名称匹配,否则将无法编译) .

我查看了go文档,但我不清楚这是否可行 .