Golang没有重新编译某些文件

时间:2016-05-10 19:21:53

标签: go build compilation ignore

我刚收到错误:

服务器

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 ...

一些提示?谢谢!

1 个答案:

答案 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中的错误,通常您不希望更改库以破坏您的代码,因此您必须记住在尝试代码之前安装新版本的库。