GoLand(JetBrains)显示错误消息“ Unresolved Reference”。但是代码可以编译并运行

时间:2020-01-01 21:53:14

标签: go jetbrains-ide goland

我正在GoLanguage中做一个项目,并将Jetbrains的GoLand用作IDE。 GoLand在IDE中向我显示了一条错误消息(“未解决的引用”),但仍可以编译并正确运行。

这是我在stackoverflow(Go - append to slice in struct)上发现的一些类似(但更简单)的代码示例。出现相同的错误消息。但是显然我仅在上面几行中实现了该方法。

package main

import (
"fmt"
)

 type MyBoxItem struct {
Name string
 }

 type MyBox struct {
Items []MyBoxItem
 }

func (box *MyBox) AddItem(item MyBoxItem) {
box.Items = append(box.Items, item)
}


 func main() {

item1 := MyBoxItem{Name: "Test Item 1"}
item2 := MyBoxItem{Name: "Test Item 2"}

box := MyBox{}

box.AddItem(item1)
box.AddItem(item2)

// checking the output
fmt.Println(len(box.Items))
fmt.Println(box.Items)
}

box.AddItem(item1)box.AddItem(item2)被标记为红色为错误。如果将光标移到光标上方,它会显示(unresolved reference "AddItem")。但是代码可以编译并运行。并且由于这是另一个stackoverflow问题的解决方案,因此我认为代码不是错误的。此外,我找不到任何错误。

enter image description here

有人可以帮忙吗?非常感谢

[编辑:我从远程服务器加载代码,然后在我的私人PC上进行本地编辑。完成更改后,我将其上传到远程服务器(使用“浏览远程主机”之类的GoLands工具)并在那里进行编译。在使用完全相同的代码在本地尝试后,错误消息有时存在,有时不存在。我完全感到困惑]

9 个答案:

答案 0 :(得分:31)

我遇到了类似的问题,但是它更为普遍。甚至fmt.Printf()之类的东西也显示为未解决。可以通过转到文件-> 使缓存无效/重新启动来解决该问题。

答案 1 :(得分:4)

我正在使用 go 模块,它是通过以下方式解决的:

  • 取消选择Preferences->Go->GOPATH->使用系统环境中定义的GOPATH
  • 文件->使缓存无效/重新启动

答案 2 :(得分:4)

我刚刚从 Goland 中删除了该项目,并从现有文件中重新创建了它。这很奇怪,但有效。

答案 3 :(得分:0)

我无法在GoLand 2019.3.1中重现该问题。我建议升级到它。

如果问题仍然存在,请描述问题发生的位置。从屏幕快照中可以看到,该文件看起来像是一个Scratch文件,而不是常规项目文件。

答案 4 :(得分:0)

我遇到了同样的问题,并且得到了怪异的修复。因此,我在when中安装并打开了项目以继续编码。它开始安装名为vscode的扩展。安装完成后,我返回GoLand关闭项目,但是我等待索引完成。突然间,引用变为绿色!

答案 5 :(得分:0)

其他评论中没有任何选项对我有帮助。我必须在设置 -> 前往 -> GOROOT 中切换 GO SDK 版本。 Goland 自动下载了 1.16 beta 1 版本,运行正常。

答案 6 :(得分:0)

Goland 2020.1 版:我打开了一个文件夹,里面有 golang 项目的子文件夹,goland 无法识别依赖项。我解决了这个问题设置 Project GOPATH

  1. ctrl + alt + s
  2. 前往 > GOPATH
  3. Project GOPATH
  4. 中点击加号按钮 +
  5. 添加您的 golang 项目文件夹,例如:~/projects/my-golang-projects

答案 7 :(得分:0)

在 Goland 首选项中,如果您使用的是全局 GOPATH,请选中“索引整个 GOPATH”选项并点击应用。

答案 8 :(得分:-1)

我通过重新安装 Go to D:\go 解决了它,然后重置 Go sdk。