我正在用Jetbrains的GoLand集成开发环境写一个使用Go语言的项目。
在编写代码时,当引用确实存在并且程序可以正确编译和运行时,GoLand会向我显示一条错误消息,比如"unresolved reference"。
下面是我在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"。然而,代码仍然可以编译和运行。由于这是另一个堆栈溢出问题的解决方案,我不认为代码是错误的。此外,我找不到其中的任何错误。

编辑:我从远程服务器加载代码,并在我的私人pc上本地编辑它。完成更改后,我将其上传到远程服务器(使用“浏览远程主机”之类的GoLands工具),并在那里构建和编译它。在使用完全相同的代码在本地尝试之后,错误消息有时存在,有时不存在。我完全糊涂了
发布于 2020-04-22 10:49:23
我也遇到过类似的问题,但它要普遍得多。甚至像fmt.Printf()这样的东西也显示出未解决的问题。能够通过转到文件->无效缓存/重新启动来解决此问题。
发布于 2021-01-11 22:51:08
我使用的是go模块,它的解决方法是:
使用system environment
中定义的GOPATH ->Go->GOPATH->GOPATH取消选择GOPATH
发布于 2021-02-25 11:37:21
我刚刚从Goland中删除了这个项目,并从现有文件中重新创建了它。这很奇怪,但很管用。
https://stackoverflow.com/questions/59556394
复制相似问题