我刚收到错误:
server / server.go:73:undefined:foo.MyName
我一开始并不理解,我试图更改我的功能名称等。 所以我创建了一个名为MyName()的函数,它返回一个我姓名的字符串..
但是,错误再次出现..经过一个多小时,我只是试图在包foo中评论我的所有代码!我想说f ** k此刻... #PS:我也评论了server.go:73行..而且..它编译并完全有效?!
我评论了我的代码,但它似乎还在这里?!所以现在我的问题是:
Golang重新编译某个文件有问题吗?
工作区
pkg
linux_amd64
src
algo database_sql github.com golang.org GoogleAPI googlemaps.github.io main main.go models myDebug router server
我正在制作"去构建main.go"
我也在没有找到任何解决方案的情况下阅读How to Write Go Code ...
一些提示?谢谢!
答案 0 :(得分:2)
所以我猜你的开发树看起来像这样:
src
├───algo
├───database_sql
├───github.com
├───golang.org
├───GoogleAPI
├───googlemaps.github.io
├───main
├───main.go
├───models
├───myDebug
├───router
└───server
└───server.go
正如您在How to Write Go Code中看到的那样,您应该有一个项目文件夹,因此main.go应为someproject/main.go
,然后您可以使用go build
来构建整个项目。
理想情况下,您希望将所有项目都放在一个文件夹中,以用于其网址,例如github.com/yourname/projectname
。即使特定项目不可公开访问,我也建议您遵循此约定。我将所有项目(甚至那些不在github中的项目)保存在我的github/my user
文件夹中。通过这种方式,您可以更轻松地查找和分类所有软件。
如果你想构建一个项目及其所有依赖项(在本例中为server / server.go),你可以go build ./...
您也可以进入服务器软件包并执行go install
安装构建并重新安装软件包。
所以你应该有这样的东西:
GOPATH
├───bin
| └───main (this will have the name of the folder)
├───pkg (this routes match the ones on src)
| └───linux_amd64
| └───server.a
└───src
├───algo
├───database_sql
├───github.com
├───golang.org
├───GoogleAPI
├───googlemaps.github.io
├───main
| └───main.go
├───models
├───myDebug
├───router
└───server
└───server.go
然后转到src/main/
并执行go build ./...
以构建所有依赖项。理想情况下,您需要执行go install ./...
以便将库安装在正确的路径上,并且您的二进制文件也会在正确的路径中创建,而不是在src
文件夹中创建。如果这样做,则需要运行二进制文件bin/main
。我建议您将GOPATH/bin
添加到路径中,以便安装软件并运行它而无需转到bin文件夹。
您导入或使用服务器包的方式可能存在一些错误。如果没有您发布代码,这是我能做的最好的事情。
编辑:在进一步思考之后,我相信我发现了错误。你正在做go build
来构建整个项目,并且在某些时候你在服务器库上做了go install
。所以现在go build
正在使用pkg
中已编译的库版本,所以如果要解决问题,请在服务器文件上执行go install
或在主服务器上执行go install ./...
夹。
这不是Go中的错误,通常您不希望更改库以破坏您的代码,因此您必须记住在尝试代码之前安装新版本的库。