为了账号安全,请及时绑定邮箱和手机立即绑定

Golang 不会重新编译某些文件

Golang 不会重新编译某些文件

Go
凤凰求蛊 2022-01-10 14:53:29
我刚刚收到一个错误:服务器server/server.go:73: 未定义: foo.MyName起初我不明白,我试图更改我的函数的名称等。所以我创建了一个名为 MyName() 的函数,它返回一个字符串,这是我的名字。但是,错误又出现了.. 一个多小时后,我试图注释掉包 foo 中的所有代码!我想说f ** k,此刻...... #PS:我还评论了server.go:73行......并且......它编译并且完全有效?!我评论了我的代码,但它似乎还在这里?!所以现在我的问题是:Golang 是否有重新编译某些文件的问题?#-------------------------------------工作区pkg    linux_amd64src   algo  database_sql  github.com  golang.org  GoogleAPI  googlemaps.github.io  main  main.go  models  myDebug  router  server我正在制作“go build main.go”我还阅读了如何编写 Go 代码但没有找到任何解决方案......一些提示?
查看完整描述

1 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

所以我猜你的开发树看起来像这样:


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


查看完整回答
反对 回复 2022-01-10
  • 1 回答
  • 0 关注
  • 179 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信