如何在VSCode上获得GoLand完美的多模块支持(不工作)

y53ybaqx  于 2023-05-11  发布在  Go
关注(0)|答案(1)|浏览(153)

当我在GoLand(Jetbrains)中打开我的多模块项目时,它的工作效果令人惊讶,* 实现 类型声明 * 和其他有用的IDE功能开箱即用。
但是当我在VSCode中打开相同的项目时,我无法让intellisense工作(使用gopls),它不工作,并且需要对go work的模块结构进行严重更改(因此它不是我的选择)
是因为GoLand使用了不同的语言服务器吗?
我尝试了Go扩展设置,但没有任何好处。我能够禁止语言服务器将所有内容变为红色,但这不是一个解决方案

bvk5enib

bvk5enib1#

go workspaces是工具包的一部分,应该可以在任何支持该功能的IDE上运行。我每天都在使用VS Code。
所以基本上你需要在项目根目录下有一个go.work文件,VS Code会解释它。示例:

go 1.20

use (
    .
    ./mymodule1
    ./mymodule2
)

不同的是,GoLand会自动添加多模块设置中的模块,我不知道VS Code有这个功能。
创建go.work文件时,GoLand会自动添加项目中的所有模块。
如果你检查Go的.gitignore,你会看到默认情况下go.work文件被忽略,所以我假设你没有对它进行版本控制。我通常会注解这一行,以便VS Code跟踪它,并将其放入我的提交中。

# Go workspace file
go.work

要向go.work添加新模块,只需从新模块根执行go work use .
有时我必须重新加载VS代码来同步它,但通常它会立即工作。
如果您仍然有问题,那么可能值得尝试troubleshooting扩展。

相关问题