Golang:即使更改代码,go run始终运行旧代码

5

我在使用golang时遇到了奇怪的问题。我运行了命令(就像每次一样):

go run main.go

然后我对我的代码进行了一些更改,然后再次运行:

go run main.go

但是执行的代码却是旧版本的代码。所以我尝试了一些方法:
  • 重新启动电脑
  • 删除临时二进制文件到临时文件夹中
  • 重新安装go
  • 删除并放回我的代码
  • 移除一些文件

但仍然运行旧版本的代码。我没有找到解决这个问题的方法,而且关于它的一些帖子也没有给出解决方案(herehere)。

关于我的配置,如下:

  • 运行更新的Raspbian的树莓派
  • Go版本1.8.1

我希望你能帮助我!

提前致谢!

最好的问候,


1
main.go 是被修改的文件吗?你确定你正在运行正确的 main.go 文件吗? - Adrian
1
你是否在工作过程中更改了项目的位置?你的编辑器可能会将更改保存在旧文件位置。 - Gavin
1
这只是针对这个项目的特定情况,其他项目中你并没有遇到这个问题吗? - Akavall
@tkausl 我尝试了,但它没有起作用。当我删除整个 $GOPATH 文件夹并再次从 go 存档中提取它时,情况也是一样的。 - Majonsi
但是它的工作方式不同,因为go run针对的是文件,而build/install针对的是包,这是Go中预期的粒度级别。对于单个文件脚本的一次性运行,go run很好,但我的建议仍然是:不要使用go run。它暗示了一种与Go不符合的使用模式。只需正常构建和运行您的项目即可。 - Adrian
显示剩余6条评论
2个回答

4

好的!问题源于导入。在代码中,一��导入调用了旧版本的代码。


1
我认为你的GOPATH指向了错误的文件夹。请运行go env,确保它指向正确的目录。如果没有设置,请将其设置为存放go文件的位置。请注意,go run通常不需要文件规范,如果需要,您必须列出应用程序中main.go依赖的所有文件的实际文件。请看这里here

请注意,通常情况下,“go run”命令不需要文件规范。 - WaltPurvis
@Windys 我的GOPATH指向了正确的文件夹。而且我不需要指定项目中的所有文件,因为我的主函数只在main.go文件中。 - Majonsi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接