如果遵循GoLang文档的工作空间结构,则两个可执行软件包可能会共享相同的软件包名称。

例如,有两个来自github的软件包:

1
2
$ $GOPATH/src/github.com/alpha/import
$ $GOPATH/src/github.com/beta/import

首先安装用户alphaimport软件包:

1
$ go install github.com/alpha/import

二进制可执行文件现在在$GOPATH/bin中可用,并命名为import

然后,安装了来自用户beta的第二个软件包:

1
$ go install github.com/beta/import

此安装/构建会将用户alpha中现有的import二进制文件替换为用户beta中的import二进制文件。

更好的命名约定可以避免这种冲突。 但是,在使用第三方库时是否有解决此问题的标准做法?

此冲突仅发生在可执行文件上,而不会发生在软件包上。 可执行文件不那么常见,并且通常具有区分的名称,因此在实践中我从未遇到过此问题。

"修复"或"最佳实践"显而易见,也很简单:只需在安装后重命名二进制文件即可。

  • 您可能还会提到指定输出名称:go build -o myexename