我正在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问题的解决方案,因此我认为代码不是错误的。此外,我找不到任何错误。
有人可以帮忙吗?非常感谢
[编辑:我从远程服务器加载代码,然后在我的私人PC上进行本地编辑。完成更改后,我将其上传到远程服务器(使用“浏览远程主机”之类的GoLands工具)并在那里进行编译。在使用完全相同的代码在本地尝试后,错误消息有时存在,有时不存在。我完全感到困惑]
答案 0 :(得分:31)
我遇到了类似的问题,但是它更为普遍。甚至fmt.Printf()
之类的东西也显示为未解决。可以通过转到文件-> 使缓存无效/重新启动来解决该问题。
答案 1 :(得分:4)
我正在使用 go 模块,它是通过以下方式解决的:
答案 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
ctrl + alt + s
+
~/projects/my-golang-projects
答案 7 :(得分:0)
在 Goland 首选项中,如果您使用的是全局 GOPATH,请选中“索引整个 GOPATH”选项并点击应用。
答案 8 :(得分:-1)
我通过重新安装 Go to D:\go 解决了它,然后重置 Go sdk。