当我在GoLand(Jetbrains)中打开我的多模块项目时,它的工作效果令人惊讶,* 实现 , 类型声明 * 和其他有用的IDE功能开箱即用。但是当我在VSCode中打开相同的项目时,我无法让intellisense工作(使用gopls),它不工作,并且需要对go work的模块结构进行严重更改(因此它不是我的选择)是因为GoLand使用了不同的语言服务器吗?我尝试了Go扩展设置,但没有任何好处。我能够禁止语言服务器将所有内容变为红色,但这不是一个解决方案
gopls
go work
bvk5enib1#
go workspaces是工具包的一部分,应该可以在任何支持该功能的IDE上运行。我每天都在使用VS Code。所以基本上你需要在项目根目录下有一个go.work文件,VS Code会解释它。示例:
go.work
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扩展。
go work use .
1条答案
按热度按时间bvk5enib1#
go workspaces是工具包的一部分,应该可以在任何支持该功能的IDE上运行。我每天都在使用VS Code。
所以基本上你需要在项目根目录下有一个
go.work
文件,VS Code会解释它。示例:不同的是,GoLand会自动添加多模块设置中的模块,我不知道VS Code有这个功能。
创建go.work文件时,GoLand会自动添加项目中的所有模块。
如果你检查Go的.gitignore,你会看到默认情况下
go.work
文件被忽略,所以我假设你没有对它进行版本控制。我通常会注解这一行,以便VS Code跟踪它,并将其放入我的提交中。要向
go.work
添加新模块,只需从新模块根执行go work use .
。有时我必须重新加载VS代码来同步它,但通常它会立即工作。
如果您仍然有问题,那么可能值得尝试troubleshooting扩展。