gpt4 book ai didi

VS 代码中的 Go linter 不适用于跨多个文件的包?

转载 作者:数据小太阳 更新时间:2023-10-29 03:32:11 25 4
gpt4 key购买 nike

我已经在 MacOS 上的 Visual Studio Code 中安装了 Go 扩展(版本 0.11.4):

enter image description here

但是,我发现 linter 不会“拾取”定义在同一个包中的函数,而是在不同的文件中。例如,如果我在同一目录中创建一个文件 foo.go with

package foobar

import "fmt"

func main() {
fmt.Println(SayHello())
}

和一个文件 bar.go with

package foobar

func SayHello() string {
return "Hello, world!"
}

然后在 foo.go 中我得到一个 linter 错误,指出 SayHello 是一个 undeclared name:

enter image description here

我在这里 ( https://github.com/golang/lint/issues/57 ) 读到过类似的问题,但由于该问题已有五年历史,我认为它现在可能已得到解决?还是 golint 根本无法跨多个文件工作?

最佳答案

[原答案已过时;这是 vscode-go 维护者提供的最新信息。更新后的答案现在在 Go 集体中标记为“推荐”]

自 2019 年以来,该插件发生了很大变化。

  • 2021 年,Go Modules 成为默认设置,这可能改变了程序的构建和分析方式。
  • vscode-go 插件默认使用 gopls 作为语言服务器。请注意,在 2019 年,有两种不同的语言服务器,gopls 仍处于实验模式。
  • golint 已弃用。

如果您仍然遇到类似问题,很可能您遇到了不同的问题。

请检查以下内容:

如果您注意到重新启动语言服务器(“Go:重新启动语言服务器”命令)可以解决您的问题,那是一个 gopls 错误。请考虑在 github.com/golang/vscode-go 中提交问题,关注 the troubleshooting guide .

否则,请打开一个包含详细信息的新问题。

----- 原答案--------

我遇到了同样的问题。我发现在启用“Go 语言服务器”(这是一项实验性功能)后我遇到了这个问题。我在 VS 代码设置-> 转到配置中禁用了它,之后问题就消失了。

关于VS 代码中的 Go linter 不适用于跨多个文件的包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58018729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com