Golang Go语言中 Goland 引用问题求教
现在有 3 个结构体
type A struct {
*B
ccc.C
}
type B struct {
opts *Option
}
package ccc
type C struct {
opts *Option
}
type Option struct {
emlog.Logger // 日志
}
// 测试函数
func (a *A) testMethod() {
a.opts.Logger // 此时 Goland 中 opts 的引用会报错, 提示 Ambiguous reference ‘opts’ ,但是可以编译 可以运行,因为只能引用 B 里面的 opts ,C 跨包了,是私有的 opts ,但是 Goland 会索引到就很离谱(同事用的 vscode 就没问题)
a.B.opts.Logger // Goland 不会报错
}
各位大佬知道如何配置 goland 解决这个问题吗?
Golang Go语言中 Goland 引用问题求教
更多关于Golang Go语言中 Goland 引用问题求教的实战教程也可以访问 https://www.itying.com/category-94-b0.html
试过两次 还是不行,讲道理小写的 opts 不是同一个包下并不会索引到~~
我不用 goland 就是因为 go 明明提供了 gopls ,它非不用…非要自己搓一个…
https://youtrack.jetbrains.com/issue/GO-11309/Invalid-Ambiguous-reference-error-with-embedded-structs-and-non-exported-fields
好像就是个没人修的 bug, 建议再去发个帖, 给 jetbrains 点压力.
我去 还真是~~2 年前的 bug 了,这还不修~
说实话以前还没遇到过类似的问题,但是最近经常遇到各种爆红,结构体点不出来,实际上运行又没问题
经常碰到这种,重启才能解决
在Go语言中,使用GoLand(JetBrains开发的一款强大的Go语言IDE)进行开发时,引用问题通常涉及包导入、模块管理以及依赖解析等方面。以下是一些解决GoLand中引用问题的常见步骤和建议:
-
检查GOPATH和GOROOT:确保你的GOPATH和GOROOT环境变量设置正确。GoLand通常会根据这些变量来解析依赖。
-
使用Go Modules:如果你的项目还没有使用Go Modules(从Go 1.11版本开始引入),建议启用。在项目的根目录下创建一个
go.mod
文件,GoLand会自动帮助你管理依赖。 -
正确导入包:确保你导入的包路径是正确的。对于本地包,使用相对路径;对于第三方包,使用模块路径。
-
更新和清理依赖:在GoLand中,你可以通过“File” -> “Invalidate Caches / Restart…”来清理缓存并重启IDE,有时这能解决引用问题。此外,运行
go mod tidy
可以清理未使用的依赖并添加缺失的依赖。 -
检查代理设置:如果你在中国等网络受限地区,可能需要配置Go代理(如GOPROXY)来正确下载依赖。
-
查看IDE日志:如果问题依旧存在,可以查看GoLand的IDE日志(通过“Help” -> “Show Log in Explorer/Finder”访问),查找可能的错误信息。
遵循上述步骤,通常可以解决大部分GoLand中的引用问题。如果问题依旧无法解决,建议详细检查错误信息和日志,或在Go社区和论坛中寻求帮助。