Go 什么导致';开始构建&x27;以'失败;输入中出现意外NUL';?
我有一个Linux虚拟机,我正试图编译一个简单的Go包。已使用git将包检索到我的用户目录中: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* 到目前为止还不错。但现
$ 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”消息
可以通过重命名目录来解决此问题,以避免生成输出的名称被视为包的一部分