Vscode 如何打开go多工程目录

169 阅读1分钟

背景

目前,在公司的在开发一个监控系统。由于其中设计了python和go代码,所以无奈使用vscode,然后由因为,这个监控系统包含了多个工程项目,因而有了这篇文章

问题

简单的说,多工程时,vscode 无法识别非根目录多go.mod ,导致导入包时报错(无法跳转函数,以及报红)。以下是问题现象(为了更好的说明,我这边写了个小demo)
目录结构
├── a
│   ├── go.mod
│   ├── internal
│   │   └── add.go
│   └── main.go
└── b
    ├── go.mod
    ├── internal
    │   └── multiply.go
    └── main.go

b/go.mod


module b

go 1.22.2

报错

image.png

a/go.mod

module a

go 1.22.2

image.png

解决方法

其实一开始的时候说了,vscode 是因为无法识别非根路径的go.mod,所以我们需要把go.mod所在路径告诉它。方法是添加xxx.code-workspace配置文件,加入go.mod 所在目录路径

  • 生成工作区配置文件

image.png

  • 目录结构如下

image.png

  • demo.code-workspace 内容

image.png

  • 效果

image.png

总结

当遇到多go.mod 文件时,需要手动添加工作区,才能正常导入。如果修改了配置文件还没有出现效果,可以命令行或重启reload一下窗口

image.png