Go 什么导致';开始构建&x27;以'失败;输入中出现意外NUL';?

Go 什么导致';开始构建&x27;以'失败;输入中出现意外NUL';?,go,Go,我有一个Linux虚拟机,我正试图编译一个简单的Go包。已使用git将包检索到我的用户目录中: $ git clone [...]/test.go Cloning into 'test.go'... done. $ cd test.go/ $ ls main.go 我设置GOPATH并构建: $ export GOPATH=$PWD; echo $GOPATH /home/vagrant/test.go $ go build $ ls main.go test.go* 到目前为止还不错。但现

我有一个Linux虚拟机,我正试图编译一个简单的Go包。已使用git将包检索到我的用户目录中:

$ git clone [...]/test.go
Cloning into 'test.go'...
done.
$ cd test.go/
$ ls
main.go
我设置GOPATH并构建:

$ export GOPATH=$PWD; echo $GOPATH
/home/vagrant/test.go
$ go build
$ ls
main.go test.go*
到目前为止还不错。但现在,当我再次尝试构建时,它失败了:

$ go build
can't load package: package .: read /home/vagrant/test.go/test.go: unexpected NUL in input

在生成之前删除test.go文件将允许其生成。但是这很不方便,因为像github.com/codegangsta/gin这样尝试重建包的工具将失败。

存储库名为
[…]/test.go
,git clone的默认容器目录是repo名称,因此包含的目录名为
test.go\

转到“帮助生成”

如果包是main并且提供了文件名,则文件名 从提到的第一个文件名派生,例如“go build”的f1 f1.go f2.go'没有提供任何文件('go build'),输出文件 name是包含目录的基本名称。

在这种情况下,输出是一个名为
test.go
的文件。问题是:

在包含包的目录中,.go,.c、.h和.s文件被视为包的一部分

go生成过程中
如果先前生成的输出
test.go
存在,它将被视为源文件,触发“输入中意外的NUL”消息

可以通过重命名目录来解决此问题,以避免生成输出的名称被视为包的一部分